如何在 R 中保存大型模拟的输出? (多节点,安全访问)
How do I save output from a large simulation in R? (multiple nodes, safe access)
我正在为一个研究项目进行大型模拟——模拟 1,000 个足球赛季并分析结果。由于季节将分布在多个节点上,我需要一种简单的方法将我的输出数据保存到一个(或多个)文件中以供以后访问。由于我无法控制节点何时完成,我不能让它们同时尝试写入同一个文件,但如果它们都保存到不同的文件,我将需要一种方法来聚合所有之后很容易的数据。想法?
不知道有没有人问过这个问题。但这是我在研究中所做的。您可以遍历文件名并将它们聚合到一个对象中,就像这样
require(data.table)
dt1 <- data.table()
for (i in 1:100) {
k <- paste0("C:/chunkruns/dat",i,"/dt.RData")
load(k)
dt1 <- rbind(dt1,dt)
}
agg.data <- dt1
rm(dt1)
以上代码假定您的所有文件都保存在不同的文件夹中,但文件名相同。
否则,您可以使用以下方法来识别与模式匹配的文件路径,然后将它们组合起来
require(data.table)
# Get the list of files and then read the files using read.csv command
k <- list.files(path = "W:/chunkruns/dat", pattern = "Output*", all.files = FALSE, full.names = TRUE, recursive = TRUE)
m <- lapply(k, FUN = function (x) read.csv(x,skip=11,header = T))
agg.data <- rbindlist(m)
rm(m)
我正在为一个研究项目进行大型模拟——模拟 1,000 个足球赛季并分析结果。由于季节将分布在多个节点上,我需要一种简单的方法将我的输出数据保存到一个(或多个)文件中以供以后访问。由于我无法控制节点何时完成,我不能让它们同时尝试写入同一个文件,但如果它们都保存到不同的文件,我将需要一种方法来聚合所有之后很容易的数据。想法?
不知道有没有人问过这个问题。但这是我在研究中所做的。您可以遍历文件名并将它们聚合到一个对象中,就像这样
require(data.table)
dt1 <- data.table()
for (i in 1:100) {
k <- paste0("C:/chunkruns/dat",i,"/dt.RData")
load(k)
dt1 <- rbind(dt1,dt)
}
agg.data <- dt1
rm(dt1)
以上代码假定您的所有文件都保存在不同的文件夹中,但文件名相同。
否则,您可以使用以下方法来识别与模式匹配的文件路径,然后将它们组合起来
require(data.table)
# Get the list of files and then read the files using read.csv command
k <- list.files(path = "W:/chunkruns/dat", pattern = "Output*", all.files = FALSE, full.names = TRUE, recursive = TRUE)
m <- lapply(k, FUN = function (x) read.csv(x,skip=11,header = T))
agg.data <- rbindlist(m)
rm(m)