Работа с фреймами данных в списке: переименование переменных - PullRequest
3 голосов
/ 29 июня 2011

Определение:

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 Ответ

3 голосов
/ 29 июня 2011

Если вы не используете return в конце функции, возвращается последнее вычисленное выражение.Так что вам нужно вернуть x.

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