Я пытаюсь выполнить функцию с побочным эффектом на вектор параллельно.Например, в следующем фрагменте, add.entry
имеет побочный эффект изменения master
.
library(parallel)
master <- data.frame()
add.entry <- function(x) {
row <- data.frame(a = x, b = sin(x))
master <- rbind(master, row)
}
mclapply(1:42, add.entry)
Вывод, который я получаю,
[[1]] ab1 1 0,841471
[[2]] ab 1 2 0,9092974
[[3]] ab 1 3 0,14112
[[4]] ab 1 4 -0,7568025
Однако, master
впоследствии ничего не содержит.Мое лучшее предположение состоит в том, что есть какое-то состояние гонки.Как я могу это исправить, например, объявив критический раздел?