【问题标题】:Unlist a list of dataframes取消列出数据框列表
【发布时间】:2013-07-15 20:32:07
【问题描述】:

这可能是一个非常简单的问题。我有一个数据框列表(df1,df2 .... dfn),即列表的每个元素都是一个数据框。所以基本上,列表是这样创建的:

mylist = list(df1, df2,...., dfn)

但是我该如何做相反的事情,即未列出以便 df1、df2 等单独驻留在工作区中?

【问题讨论】:

  • 谢谢。你是心灵感应者吗?
  • 问题应该是,你为什么想要这样做。如果您将所有 df 都放在一个可爱的列表中,那么您几乎没有理由需要将它们变成单独的对象。您可以将它们作为列表的元素使用。
  • 同意西蒙。如果您想按名称称呼它们,最好在列表中命名它们 - 例如myList = list(df1=data.frame(...), df2=data.frame(...), ...) 并用myList[['df1'] 打电话给他们
  • 我猜只是为了方便。使用 RStudio,可以更轻松地跟踪所有数据帧。

标签: r


【解决方案1】:

使用list2env它是专门为此设计的:

从一个命名列表 x,创建一个包含所有列表的环境 组件作为对象,或从 x “多重分配”到预先存在的 环境。

所以这里:

list2env(mylist ,.GlobalEnv)

【讨论】:

  • 哇,你每天都能学到东西!!多年前就知道这一点真是太好了! +1
  • 这看起来有点危险!
  • @SimonWoodward 认为它在全局环境中很危险,但您可以创建一个 env() 并在那里列出变量。
【解决方案2】:

您可以像这样简单地使用 for 循环和 assign 函数:

# Sample data
df.list <- list(data.frame(x = 1:3, y = c(10, 20, 30)), 
                data.frame(x = 4:6, y = c(40, 50, 60)), 
                data.frame(x = 7:9, y = c(70, 80, 90)))

# Write out single data frames
for (i in seq(df.list))
  assign(paste0("df", i), df.list[[i]])

【讨论】:

  • 当你有一个未命名的列表时很棒的解决方案。
  • 如何将其写入不同的数据帧?
  • @krushnachChandra 写入不同的data.frames,本例为df1,df2,df3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 2017-10-16
  • 1970-01-01
  • 2016-12-16
相关资源
最近更新 更多