gpt4 book ai didi

循环从 .Rdata 文件中读取数据集

转载 作者:行者123 更新时间:2023-12-04 05:36:40 27 4
gpt4 key购买 nike

假设我们有这种情况:

  • 我有很多 .RData 文件,它们超过 100mb(无论如何,但很大)。
  • 在每个 .RData 文件中都有一个名为“Dataset_of_interest”的数据集,它们都是我想要创建的一个大数据集的一部分。

  • 所以我想知道是否可以仅将我感兴趣的数据集加载到内存中,但不能加载整个 .RData 文件?

    我想循环加载每个“Dataset_of_interest”,合并到一个大文件中,然后将其保存在一个文件中。

    编辑:我在 Windows 7 上工作。

    最佳答案

    我认为这是可能的,但需要一些并行处理能力。每个工作人员都会加载 .RData 文件并输出所需的对象。合并结果可能非常简单。

    我无法为您的数据提供代码,因为我不知道结构,但我会按照下面的代码块做一些事情。请注意,我使用的是 Windows,您的工作流程可能会有所不同。您不应该缺少计算机内存。此外,降雪并不是使用多核的唯一接口(interface)。

    # load library snowfall and set up working directory
    # to where the RData files are
    library(snowfall)
    working.dir <- "/path/to/dir/with/files"
    setwd(working.dir)

    # initiate (redneck jargon: and then she ate) workers and export
    # working directory. Working directory could be hard coded into
    # the function, rendering this step moot
    sfInit(parallel = TRUE, cpus = 4, type = "SOCK")
    sfExport(list = c("working.dir")) # you need to export all variables but x

    # read filenames and step through each, returning only the
    # desired object
    lofs <- list.files(pattern = ".RData")
    inres <- sfSapply(x = lofs, fun = function(x, wd = working.dir) {
    setwd(wd)
    load(x)
    return(Dataset_of_interest)
    }, simplify = FALSE)
    sfStop()

    # you could post-process the data by rbinding, cbinding, cing...
    result <- do.call("rbind", inres)

    关于循环从 .Rdata 文件中读取数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11840366/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com