首页 > 解决方案 > 重命名列表中每个数据框中的 1 列

问题描述

我正在尝试重命名数据框列表中的一列。

my_list <- list(data.frame(a = 1:5, b = 1:5), data.frame(a = 1:5, b = 1:5))

[[1]]
  a b
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

[[2]]
  a b
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

lapply(my_list, function(x){
  k <- my_list[[ x ]]
  # set 2nd column to a new name
  names(k)[2] <- "NEW COLUMN"
  # return
})

这是我希望达到的输出

[[1]]
  a NEW COLUMN
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

[[2]]
  a NEW COLUMN
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5

但是,我的 lapply 似乎不起作用。错误代码如下:

my_list[[x]] 中的错误:无效的下标类型“列表”

标签: r

解决方案


我们正在循环遍历它list本身而不是它的索引。因此,在匿名调用中,'x' 是值,即list.

lapply(my_list, function(x) {names(x)[2] <- "NEW COLUMN"; x})

假设,如果我们遍历序列,OP 的代码是正确的

lapply(seq_along(my_list), function(i) {
      k <- my_list[[ i ]] # extracted the list element
      names(k)[2] <- "NEW COLUMN"
      k
     })

推荐阅读