是否可以通过一些简单的方法将大量数据框放入列表中? 意思是代替必须手动编写每个名称,如下所示:
list_of_df <- list(data_frame1,data_frame2,data_frame3, ....)
我将所有数据框都加载到我的工作空间中。 我将使用列表循环遍历所有数据帧(对每个数据帧执行相同的操作)。
答案 0 :(得分:24)
您可以ls()
使用get
,如下所示:
l.df <- lapply(ls(), function(x) if (class(get(x)) == "data.frame") get(x))
这将从当前环境工作区加载所有data.frames。
或者,正如@agstudy建议的那样,您可以使用模式加载您需要的data.frame
。
l.df <- lapply(ls(pattern="df[0-9]+"), function(x) get(x))
加载当前环境中以data.frame
开头的所有df
,后跟1到任意数量的数字。
答案 1 :(得分:7)
到目前为止,最简单的解决方案是将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()
答案 2 :(得分:5)
例如,您可以将ls
与特定模式一起使用。例如:
一些data.frames:
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"