Когда известна длина вектора
Вот решение, в котором вы создаете пустую матрицу 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"))