使用列表中的数据框:重命名变量

时间:2011-06-29 16:48:24

标签: list r data-manipulation data-management

定义:

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

1 个答案:

答案 0 :(得分:3)

如果在函数末尾没有使用return,则返回最后一个计算表达式。所以你需要返回x

dats <- lapply(dats, function(x) {
            names(x)<-tolower(names(x))
            x})