首页 > 解决方案 > 如何使用 parLapply 加快读取多个 R 对象的速度?

问题描述

我有很多大列表(不幸的是当时)保存为.RData文件。保存时所有文件都具有相同的名称。因此,在读入文件后,我想为它们分配一个新名称。我想加快这个过程并考虑并行计算。我的尝试是(假设文件名仅与其名称的最后一个字符不同):

require(parallel)
myReadin <- function (x) {
  # Lets assume all lists were named myList when saving them and are hence returned with that name
  load(paste0('myFolder/list', x, '.RData'))
  assign(paste0('myList', x), myList, envir = .GlobalEnv)
}
cl <- makeCluster(getOption("cl.cores", detectCores()))
call.function <- parLapply(cl, 1:50, myReadin)

这通常有效。但是,在读取文件时,我的计算机 CPU 并未达到极限,但计算机似乎只使用一个内核。此外,仅返回一个包含 50 个不同列表的列表,但在全局环境中call.function没有 50 个单个列表 ( )。myList1, ..., myList50有没有办法使用我所有的核心来读取不同的文件并将它们全部作为全局环境中的单个列表?

标签: rparallel-processingrdata

解决方案


推荐阅读