更改 data.frames 列表的第 n 个元素的 colnames

Changing colnames of the nth element of a list of data.frames

我有一个数据框名称列表

我使用 objects() 来获取它们。

my_list <- objects()

my_list

[1]"df1"
[2]"df2"
[3]"df3"
[4]"df4"
... 

每个数据框有 7 列

我有 3 个不同的字符向量 v1,v2,v3(长度 4),我想用它们来命名数据框的前 4 列。我基本上想按顺序重复使用这些向量,直到我的 data.frame 列表中的所有列都被命名。

重要提示:我想使用 3 个向量来命名所有数据帧。 v1 命名为 df1v2 命名为 df2v3 命名为 df3v1 再次命名为 df4, 等等...

df1

  X1 X2 X3 X4 X5 X6 X7
1 NA NA NA NA NA NA NA
2 NA NA NA NA NA NA NA
3 NA NA NA NA NA NA NA

v1 <- c(a,b,c,d)    


magic(my_list)

df1

   a  b  c  d X5 X6 X7
 1 NA NA NA NA NA NA NA
 2 NA NA NA NA NA NA NA
 3 NA NA NA NA NA NA NA
 ...

data.table 包中的设置名称将起作用。

setnames(df,old = c(1:4), new = v1[1:4])

编辑:如果您想对整个列表执行此操作,可以使用 lapply。

lapply(l, function(x) setnames(x,old = c(1:4), new = v1[1:4]))

edit2:回收 3 个向量,并使其易于阅读 -

 for (i in 1:length(l))
          {
  if (i%%3 == 1) {
    setnames(l[[i]],old = c(1:4), new = v1[1:4])
  }
  else if (i%%3 == 2) {
    setnames(l[[i]],old = c(1:4), new = v2[1:4])
  }
  if (i%%3 == 0) {
    setnames(l[[i]],old = c(1:4), new = v3[1:4])
  }
}