Именование столбцов фреймов данных в списке

StackOverflow https://stackoverflow.com//questions/25006270

  •  20-12-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать lapply функция для именования кадров данных в списке.

У меня есть список, l, из двух фреймов данных, каждый из которых содержит по два столбца.Я хотел бы назвать столбцы двух фреймов данных одинаково:для первого столбца, "a" и для второго столбца "b".Я думал, lapply функция поможет мне сделать это;однако это не сработало так, как ожидалось (возможно, я использую его неправильно).Кажется, что lapply всегда будет выдавать некоторый результат и не может использоваться для назначения (по крайней мере, так, как я его использую).

l <- list(df1 = as.data.frame(replicate(2, rnorm(5))),
          df2 = as.data.frame(replicate(2, runif(5))))

lapply(l, function(x) colnames(x) <- letters[1:2])

$df1
[1] "a" "b"

$df2
[1] "a" "b"
Это было полезно?

Решение

Вы были почти там:

l <- list(df1 = as.data.frame(replicate(2, rnorm(5))),
          df2 = as.data.frame(replicate(2, runif(5))))

lapply(l, function(x) {
    colnames(x) <- letters[1:2]
    x
})

Вы должны вернуть data.frame x


Сформируйте комментарий @thelatemail, действительно элегантное решение:

lapply(l, setNames, letters[1:2])

С использованием setnames из data.table пакет (спасибо Ананде Махто)

library(data.table)
lapply(l, setnames, letters[1:2])

Используя этот подход, data.frames не копируются.Полезно для БОЛЬШИХ data.frameс.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top