将多个数据框放入列表(智能方式)[重复]

Posted

技术标签:

【中文标题】将多个数据框放入列表(智能方式)[重复]【英文标题】:Put multiple data frames into list (smart way) [duplicate] 【发布时间】:2013-02-03 22:50:43 【问题描述】:

是否可以通过某种简单的方式将大量数据框放入列表中? 意思是不必像下面这样手动编写每个名称:

list_of_df <- list(data_frame1,data_frame2,data_frame3, ....)

我已将所有数据框加载到我的工作空间中。 我将使用列表循环遍历所有数据帧(对每个数据帧执行相同的操作)。

【问题讨论】:

@Imo 和@EdChum;此问题发布在您将其标记为重复的问题之前。请看日期! 这个重复的标签似乎有问题。另一个问题似乎是针对声明数据框列表的。这个问题似乎指向将已声明的数据帧放入列表中。这是一个细微的差别;但是,这些任务略有不同。 【参考方案1】:

您可以将ls()get 一起使用,如下所示:

l.df <- lapply(ls(), function(x) if (class(get(x)) == "data.frame") get(x))

这将从您当前的环境工作区加载所有 data.frames。

或者,正如@agstudy 建议的那样,您可以使用模式仅加载您需要的data.frames。

l.df <- lapply(ls(pattern="df[0-9]+"), function(x) get(x))

加载当前环境中所有以df 开头的data.frames,后跟1 到任意数量的数字。

【讨论】:

有没有办法让包含的对象的名称保持不变?此方法效果很好,但数据框名称不是提取的名称。有没有比单独分配更好的方法?谢谢。 @Anusha,对不起,我不太明白你的意思。您是说您想要一个 data.frames 列表,列表中每个元素的名称都是这些 data.frames 的名称吗? 是的。这些对象已通过其名称进行标识,但未包含在列表中。我更愿意指定在此步骤中选择的数据框的名称。 请让我知道这是否需要发布一个单独的问题。我在评论中提出了问题,因为似乎解决方案可能是对这里的代码进行一些修改。 只需将lapplysetNames 包装起来:setNames(lapply(ls(pattern="df[0-9]+"), function(x) get(x)), ls(pattern="df[0-9]+"))【参考方案2】:

到目前为止,最简单的解决方案是将data.frame 放入您创建它们的列表中。但是,假设您有一个对象名称的字符列表:

list_df = lapply(list_object_names, get)

您可以在哪里构建这样的列表(例如 10 个对象):

list_object_names = sprintf("data_frame%s", 1:10)

或将当前工作区中的所有对象放入一个列表中:

list_df = lapply(ls(), get)
names(list_df) = ls()

【讨论】:

【参考方案3】:

例如,您可以将ls 与特定模式一起使用。例如:

一些数据帧:

data.frame1 <- data.frame()
data.frame2 <- data.frame()
data.frame3 <- data.frame()
data.frame4 <- data.frame()

list(ls(pattern='data.fra*'))
[[1]]
[1] "data.frame1" "data.frame2" "data.frame3" "data.frame4"

【讨论】:

这会给你一个名称列表,而不是对象的内容。

以上是关于将多个数据框放入列表(智能方式)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将数据框列中的列表拆分为多列[重复]

如何使用 lapply 将列表元素放入不同的数据框中

向空的 Pandas 数据框添加一行 [重复]

Python,获取多个列表并放入 pd.Dataframe

如何自动展开到组合框中的重复条目?

MS Access 07-10,希望能够将字段放入列表/组合框中