并行R计算时相同函数的结果不同

时间:2018-02-08 20:02:06

标签: r parallel-processing system2

我在Windows 10下使用 system2 功能与并行库调用外部批处理时遇到问题,我的函数执行外部程序来读取二进制文件(必须是与示例相同的文件夹中的内容)。问题是myfunction在调用简单函数时返回正确的行数(35行),但在并行化时返回少4行(31行)。 Here you can find an example with all fileshttps://www.dropbox.com/sh/kdoqdv5uh1rhr98/AAB86TpgVjVlFQRsTOvmZoipa?dl=0) 我的功能如下:

运行功能

a

我的功能定义为:

file_to_read<-"crop@seasonal$d.UED"
library(parallel)    
cl <- makeCluster(2)
clusterEvalQ(cl, library(base))
seq_along_path_index<-seq_along(all_cells$V1)
list_results<-parLapply(cl,file_to_read,
                      myfunction)) #return 31
stopCluster(cl)
#simple call
list_results2<-myfunction(file_to_read) #return 35

由于

1 个答案:

答案 0 :(得分:0)

这可能来自数据框也是列表的事实。 例如,当您使用unlist(list(iris, iris))时,您将获得大小为1500的数字向量。 相反,如果您想要包含所有数据框列的列表,请尝试将unlistrecursive = FALSE一起使用,或者如果您希望附加数据框,请使用do.call("rbind", list(iris, iris))代替unlist(list(iris, iris))按行。