У меня есть вопрос относительно параллельного программирования и оператора <<-
в R. Я хочу применить функцию xfun
к матрице x
.Если запись в первом столбце меньше 0,5, она должна добавить запись во втором столбце к вектору vec
вне функции в глобальной среде.В конце функция должна вернуть первый столбец плюс случайное число в y
.
Если я использую обычную функцию apply
, она работает точно так же, как и должна.Однако я хочу применить подобную функцию к огромному набору данных и, следовательно, хочу сделать это параллельно через функцию future_apply
из пакета "future.apply".Но когда я это делаю, оператор <<-
не работает и vec
остается пустым.Есть кто-нибудь, кто знает, почему это так и есть ли способ заставить это работать?
Заранее спасибо
x <- matrix(runif(20), nrow = 10, ncol = 2)
vec <- NULL
xfun <- function(x) {
y <- runif(1)
if (x[1] < 0.5) {
vec <<- append(vec, x[2])
}
return(x[1] + y)
}
# works
xy <- apply(x, 1, xfun)
library(future.apply)
# vec stays empty
xy <- future_apply(x, 1, xfun)