параллельное программирование и оператор << - присваивания в R - PullRequest
0 голосов
/ 28 января 2019

У меня есть вопрос относительно параллельного программирования и оператора <<- в 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)
...