【问题标题】:Unlisting a data frame by changing column names of the data frames通过更改数据框的列名取消列出数据框
【发布时间】:2016-07-08 09:13:38
【问题描述】:

让我有一个列表(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) 将标头为 a1,a2,a3.....

  • 第二个数据帧(df2)的标题为 b1,b2,b3.....

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

然后继续。

如何在 R 中做到这一点?我会很高兴得到任何帮助。非常感谢。

【问题讨论】:

  • 您为什么不想将它们保留在列表中?看看 list2envsetNames 听起来你在问什么。
  • @A Handcart And Mohair,由于我会将每个数据框导出为 excel 文件,我想将它们取消列出。
  • 您可以使用lapply 而不是在工作区中创建大量对象。无论如何,list2env 将执行您所说的“取消列出”活动。
  • 如您所说,我可以使用 lapply 导出列表的元素。但是我无法重命名列名。
  • 当然可以。这就是为什么我建议setNames

标签: r


【解决方案1】:

这是我在 cmets 中描述的模型。我没有显示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”的列。

【讨论】:

    【解决方案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 And Mohair 的建议,我的代码如下:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-30
        • 2020-02-18
        • 2013-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多