【问题标题】:Load data frames into list将数据框加载到列表中
【发布时间】:2015-06-06 13:30:21
【问题描述】:

我正在尝试将一堆 *.Rdata 加载到列表中。

files <- paste0("name", 1:10, ".Rdata")
data <- lapply(files, load)

这将创建一个列表,其中每个元素都有数据框的名称,但没有其他内容。

如果我重新定义文件使其只包含第一个文件,然后调用:

load(files)

然后是“作品”,但“文件”中的文件被分配给全局环境,这不是我想要的。

我想最终得到一个列表,每个元素中都包含数据框。这样,当我进行数据处理时,我就可以在列表中使用。

【问题讨论】:

  • 这可能对stackoverflow.com/questions/3764292/loading-many-files-at-oncelapply(files, load, .GlobalEnv)有帮助
  • 是的,我想。但这会在全球环境中创建一堆文件,不是吗?
  • 对不起,我评论的时候只看了第一部分
  • 每个.Rdata是否有多个对象(data.frames)
  • 试试lapply(files, function(x) mget(load(x)))

标签: r load lapply


【解决方案1】:

现已测试,确实有效!

e1 = new.env()
invisible(lapply(files, load, envir = e1))
my_list = as.list(e1)

【讨论】:

  • @user3551644 哎呀,它当然不起作用,因为lapply 不返回环境,所以它不能嵌套。现已修复。
【解决方案2】:

你可以试试

lapply(files, function(x) mget(load(x)))

mget 将返回列表中对象(或多个对象)的值。在您的.Rdata 文件中,每个文件只有一个“data.frame”对象。所以,即使get 也应该可以工作。

在您的代码中,

load(files[1]) 

对象将在全局环境中找到。假设对象是 'd1',通过在控制台上输入 'd1',您可以得到对象的值。同样的方法

lapply(files, load, .GlobalEnv)

在全局环境中加载对象,并且可以通过键入来访问。您的问题,我猜想是获取列表中的值,这可以使用getmget 来完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多