重命名列表中每个数据框中的1列

时间:2019-01-16 09:46:25

标签: r

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

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

但是,我的不适似乎无法正常工作。错误代码如下:

  

my_list [[x]]中的错误:下标类型'list'无效

1 个答案:

答案 0 :(得分:1)

我们正在遍历list本身而不是其索引。因此,在匿名调用中,“ x”是值,即list的元素data.frame。

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
     })