定义:
dats <- list( df1 = data.frame(A=sample(1:3), B = sample(11:13)),
df2 = data.frame(AA=sample(1:3), BB = sample(11:13)))
s.t.
> dats
$df1
A B
1 2 12
2 3 11
3 1 13
$df2
AA BB
1 1 13
2 2 12
3 3 11
我想将所有变量名从大写改为小写。我可以使用循环来实现,但是无论如何都无法使这个lapply
调用起作用:
dats <- lapply(dats, function(x)
names(x)<-tolower(names(x)))
这导致:
> dats
$df1
[1] "a" "b"
$df2
[1] "aa" "bb"
期望的结果是:
> dats
$df1
a b
1 2 12
2 3 11
3 1 13
$df2
aa bb
1 1 13
2 2 12
3 3 11
names(x) <- tolower(names(x))
。该赋值语句的结果分别是"a" "b"
和"aa" "bb"
,所以这就是函数返回的内容。例如,尝试(names(x) <- tolower(names(x)))
。 - Joshua Ulrichfunction(x,y){ z <- x^2 + y^2; return(x+y+z) }
:返回值与表达式中计算的值不同,这使得更加自由。对于我的情况,期望的返回值是数据框而不是向量names(x)
。 - Fredreturn
关键字。function(x,y){ z <- x^2 + y^2; x+y+z }
可以达到同样的效果。顺便说一下,?function
无法工作,因为function
是一个保留字。 - Joshua Ulrichreturn
以使像我这样的新手更加明确。该示例来自帮助页面。 - Fred