21

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

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

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

4

3 回答 3

30

您可以使用ls()withget如下:

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

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

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

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

加载data.frame当前环境中以 1 开头的所有 sdf到任意数量的数字。

于 2013-02-19T09:55:26.507 回答
8

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

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()
于 2013-02-19T09:55:32.333 回答
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"
于 2013-02-19T09:54:17.433 回答