我正在尝试使用lapply
函数命名列表中的数据框。
我有一个2个数据框的列表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"
答案 0 :(得分:4)
你快到了那里:
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
(感谢Ananda Mahto)
library(data.table)
lapply(l, setnames, letters[1:2])
使用此方法不会复制data.frame
。适用于BIG data.frame
s。