有没有办法在 r 的集群中设置语言环境?

Is there a way to set locales in cluster in r?

我不得不运行一段代码使用并行处理来减少执行时间。每个步骤都是相互独立的。我创建了一个集群,

 cl = makeCluster(cores)
 registerDoParallel(cl)
 invisible(clusterEvalQ(cl, sapply(list.files("./Src/LibrariesAndFunctions/",
                                             full.names = TRUE,
                                             recursive = TRUE),
                                  function(x) {
                                    source(x, encoding = "UTF-8")
                                  })))

现在我需要阅读同一目录中的一组可用函数。问题是数据是日文的,我在集群外全局设置了区域设置为

Sys.setlocale("LC_ALL","japanese_JAPAN")

这在集群外有效,但在集群内无效,它会抛出这样的错误,

2020/02/12 20:10:27.742   [INFO ]   2020/02/12 20:10:27.497   |main        |  [xxx] 結合 開始
Error in checkForRemoteErrors(lapply(cl, recvResult)) : 
  4 nodes produced errors;irst error: ./Src/LibrariesAndFunctions//01_Setup_Logging_Milestone/I103_Setup.R:15:0: unexpected end of input
13:   ##
14:   ## 
   ^

此错误表明第 14 行的输入意外结束,但那里有日文注释。只有将评论翻译成英文才能解决这个问题。所以我的问题是,如何在集群节点中设置语言环境?

您可以 运行 每个集群节点上的任意 R 代码 clusterEvalQ

parallel::clusterEvalQ(cl, Sys.setlocale("LC_ALL","japanese_JAPAN"))

我找到了解决这个问题的方法。解决方案是这样的。

clusterCall(cl,function(){ Sys.setlocale("LC_ALL","japanese_JAPAN")})

已在集群中设置语言环境。