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

时间:2016-10-18 21:23:11

标签: r list dataframe names

我有一个数据框名称列表

我用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再命名{{1}等等...

df4

1 个答案:

答案 0 :(得分:1)

data.table包中的Setnames可以正常工作。

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