首页 文章

通过更改数据框的列名来取消列出数据框

提问于
浏览
0

让我有一个列表(list1),其中包含数据框(df1,df2,..,dfn):

每个数据帧包含不同数量的列 . 举个例子

list1[[1]]=df1

其中df1:

x       y
----   -----
45     6
65     87
12     90

list1[[2]]=df2

其中df2:

a       b      c
----   ----    ----
23     67      43
71     13      8
2      9       12

我想取消列表list1作为返回df1和df2

DF1:

a1     a2
----   -----
45     6
65     87
12     90

DF2:

b1     b2      b3
----   ----    ----
23     67      43
71     13      8
2      9       12

也就是说,

  • 第一个数据帧(df1)将 Headers 为a1,a2,a3 .....

  • 第二个数据帧(df2)将 Headers 为b1,b2,b3 .....

  • 第三个数据帧(df3)将 Headers 为c1,c2,c3 .....

然后继续

我怎么能在R?我会很高兴得到任何帮助 . 非常感谢 .

3 回答

  • 2

    以下是使用循环重命名列表中数据框的列的方法 .

    for (i in seq_along(list1)) {
        setNames(list1[[i]], paste0(letters[i], seq_along(list1[[i]])))
    }
    
  • 3

    非常感谢@A Handcraft And Mohair和@Gregor . 根据@A Handcraft和Mohair的建议,我的代码如下:

    list2<-list()
    for(i in seq_along(list1))
      {
    list2[[i]]<-setNames(list1[[i]], paste(letters[[i]],1:ncol(list1[[i]])))
    }
    
  • 3

    这里's a mockup of what I was describing in the comments. I' m没有显示 list2env 因为这对你的最终目标来说似乎没有必要 .

    样本数据:

    myList <- replicate(10, data.frame(v1 = 1:2, v2 = 3:4), FALSE)
    

    重命名列并将数据写入csv文件:

    lapply(seq_along(myList), function(x) {
      FileName <- sprintf("%s.csv", letters[x])
      write.csv(setNames(myList[[x]], paste0(letters[x], 1:length(myList[[x]]))), 
                file = FileName, row.names = FALSE)
    })
    

    结果将是10个csv文件,名为 a.csvb.csv ,依此类推,其中 a.csv 将具有名为"a1" ... "an"的列 .

相关问题