如何将 fread 输出保存在 R 中的向量中
How to save fread outputs in the vector in R
我需要将 f
个数据集保存到向量 allf
中。这是我的工作代码。
allf <- vector(mode = "list", length = 100)
for(i in 1:100)
{
f = data.table::fread(paste0(dirPath, i, ".csv"))
allf[[i]] <- f
}
现在我想制作这段代码的并行版本:
allf <- vector(mode = "list", length = 100)
allf <- foreach(i=1:100, .combine=rbind)
{
f = data.table::fread(paste0(dirPath, i, ".csv"))
f
}
问题是所有 f
元素都是按顺序保存的,因此我无法使用 allf[[i]]
.
访问每个 f
如何解决这个问题?
这是 snow
包,我能够看到常规负载的收益,尽管我们应该按照@joran 在评论中的期望:
library(snow)
cl <- makeSOCKcluster(rep("localhost", 4))
filenames <- Sys.glob(paste0(dirPath, "*.csv"))
f <- parLapply(cl, filenames, data.table::fread)
stopCluster(cl)
我需要将 f
个数据集保存到向量 allf
中。这是我的工作代码。
allf <- vector(mode = "list", length = 100)
for(i in 1:100)
{
f = data.table::fread(paste0(dirPath, i, ".csv"))
allf[[i]] <- f
}
现在我想制作这段代码的并行版本:
allf <- vector(mode = "list", length = 100)
allf <- foreach(i=1:100, .combine=rbind)
{
f = data.table::fread(paste0(dirPath, i, ".csv"))
f
}
问题是所有 f
元素都是按顺序保存的,因此我无法使用 allf[[i]]
.
f
如何解决这个问题?
这是 snow
包,我能够看到常规负载的收益,尽管我们应该按照@joran 在评论中的期望:
library(snow)
cl <- makeSOCKcluster(rep("localhost", 4))
filenames <- Sys.glob(paste0(dirPath, "*.csv"))
f <- parLapply(cl, filenames, data.table::fread)
stopCluster(cl)