当向量长度已知时
这是一个解决方案,您可以创建一个已知维度的空矩阵M(行数是向量长度 (lVector) 和列数 (nCols) 您自己选择)。在nCols 之后(当矩阵已满时),您将其写入具有唯一标识符的光盘。
# These parameters are known
lVector <- 10
nCols <- 1e4
# Create matrix
M <- matrix(nrow = lVector, ncol = nCols)
iter <- 0
# This is unknown before
nIterations <- 1e5 + 10
# Perform iterations
for(i in seq_len(nIterations)) {
iter <- iter + 1
# Perform simulation and write result to a matrix column
M[, iter] <- sample(100, 10)
if (iter == nCols) {
# Write result to disc
saveRDS(M, paste0("result_", i, ".RDS"))
# Reset counter
iter <- 0
# Create new empty matrix
M <- matrix(nrow = lVector, ncol = nCols)
}
}
# Write last 10 iterations to a disc (they didn't reach 1e4)
saveRDS(M[, 1:iter], paste0("result_", i, ".RDS"))
这将写入矩阵 (result_10000.RDS, result_20000.RDS, ...)
当向量长度未知时
在这里您可以创建一个长度为lList 的空列表,并在lList 迭代后将其写入磁盘并重新创建一个新列表。
# These parameters are known
lList <- 1e4
iter <- 0
# Create empty list
L <- rep(list(NA), lList)
# This is unknown before
nIterations <- 1e5 + 10
# Perform iterations
for(i in seq_len(nIterations)) {
iter <- iter + 1
L[[iter]] <- sample(100, 10)
if (iter == lList) {
saveRDS(L, paste0("result_", i, ".RDS"))
iter <- 0
L <- rep(list(NA), lList)
}
}
saveRDS(L[1:iter], paste0("result_", i, ".RDS"))