我试图使用lapply(并希望lapply的解决方案)重命名列表中的data.frame的列,但它返回名称,而不是重命名的data.frames:
# define list
li <- list(u_n = data.frame(x = 1:3), r_l = data.frame(y = 4:6))
# trying to rename columns after the element of the list they're located in
li_2 <- lapply(1:length(li),
function(x,y) colnames(y[[x]]) <- names(y)[x], y = li)
但是,这会返回:
[[1]]
[1] "u_n"
[[2]]
[1] "r_l"
如果我使用与lapply单独指定的函数相同的方法,它确实有效:
li[1]
$u_n
x
1 1
2 2
3 3
colnames(li[[1]]) <- names(li)[1]
li[1]
$u_n
u_n
1 1
2 2
3 3
1 回答
我们可能需要在命名后返回对象 .
或者这可以通过
setNames
完成或者我们可以使用
Map
,它是mapply
的包装器(这是sapply
的多变量版本) . 我们将FUN
应用于每个输入的相应元素 .在这里,我们将使用
list
元素的相应名称更改每个list
元素的列名 . 如果我们使用匿名函数,那就是