【发布时间】:2016-03-13 17:20:02
【问题描述】:
我一直在处理数百个文件,这些文件作为单独的数据框自动加载到工作区中(假设我的工作区中有 500 个数据框)。
我想创建一个由工作区中的所有数据框/对象组成的列表,并对它们应用一个函数。当然我可以手动输入所有的对象,但是对于成百上千的数据帧来说效率不是很高。我想知道是否有任何方法可以使用 ls() 函数的输出,例如:
ls()
[1] "a" "b" "c" "d"
[5] "e" "f" "g" "h"
[9] "i" "j" "k" "l"
[13] "m" "n" "o" "p"
...
不幸的是,当我从ls() 输出中提取时,我只得到一个字符串字符向量,而不是数据帧列表。
我会很感激你的想法。谢谢。
已编辑:以下页面 How do I make a list of data frames in r 提供了一些背景信息,但它没有回答我的问题,因为它不涵盖大量数据帧。
【问题讨论】:
-
与其创建大量数据框对象,不如将工作目录中的所有数据集加载到列表中可能更容易。即
files <- list.files(); lst <- lapply(files, read.table)对于您目前的情况,我会使用mget(ls()) -
我建议将
eval(parse(text= ...与ls()字符向量结合使用 -
@akrun 感谢您的想法。是的,这个特定问题可能更容易,但我也希望将每个数据框作为一个单独的对象。问题是我想在所有感兴趣的数据帧上运行一组函数,其中一些也将用于进一步分析,所以我只是尝试多任务处理并考虑最有效的工作流程。
-
@SImon 您可以运行列表本身中的所有函数集,然后根据某些标准清除不需要的函数。我不会有 500 个数据框对象。如果您以后需要将列表的子集另存为单独的文件,那么在列表中会更容易。
-
@akrun 我刚刚测试了您的“mget(ls())”方法,它在数千个小型数据帧中表现出色。这次真是万分感谢!它需要一些整理,因为代码将所有对象从工作区带入列表,包括函数和值,但它完全符合我的要求。再次感谢。