Экспорт функций пакета R в параллельный кластер внутри пакета R

В пакете R, над которым я работаю, есть функции (например, function1), которые полагаются на вспомогательные функции (например, h_function1 и h_function2) в моем пакете. Я распараллеливаю, чтобы многократно вызывать function1 в другой функции в моем пакете.

В настоящее время в моем пакете я использую код

parallel::clusterExport(cl, varlist=c("h_function1", "h_function2"), envir=environment())
parallel::parSapply(X=1:100, FUN=function1, cl=cl)

где cl — кластер из параллельного пакета, переданного в функцию. Однако это предполагает, что вспомогательные функции h_function1 и h_function2 загружаются из моего пакета в локальную среду, что может быть неверным для некоторых пользователей.

Как можно гибко экспортировать функции в кластер? Можно ли экспортировать все функции пакета по имени пакета?


person user257566    schedule 20.10.2020    source источник
comment
Если все эти функции находятся в пространстве имен вашего пакета, вам не нужно предполагать, что пользователь загрузил что-либо в локальную среду.   -  person Roland    schedule 29.10.2020


Ответы (1)


Обычно я делаю это с помощью следующего кода:

parallel::clusterEvalQ({library("<package-name>")})
person snaut    schedule 01.11.2020