如何在R中进行并行?

如何在R中进行并行?,r,parallel-processing,R,Parallel Processing,我正在读取目录中包含100多个文件的csv文件,然后我在做一些事情,我有8核cpu,所以我想在并行模式下完成,以更快地完成 我写了一些代码,但不适合我-(使用linux) 库(data.table) 图书馆(平行) #计算核心的数量 不,你有这个概念。您需要传递文件列表,然后处理它们。匿名函数应该完成处理单个文件并返回所需结果的整个过程 我的建议是,首先使用常规的lappy或sapply来完成这项工作,然后启动并行后端,导出您可能需要的所有必要库和对象 parLapply(cl, X = fil

我正在读取目录中包含100多个文件的csv文件,然后我在做一些事情,我有8核cpu,所以我想在并行模式下完成,以更快地完成

我写了一些代码,但不适合我-(使用linux)

库(data.table)
图书馆(平行)
#计算核心的数量

不,你有这个概念。您需要传递文件列表,然后处理它们。匿名函数应该完成处理单个文件并返回所需结果的整个过程

我的建议是,首先使用常规的
lappy
sapply
来完成这项工作,然后启动并行后端,导出您可能需要的所有必要库和对象

parLapply(cl, X = files, FUN = function(x, ...) {
  ... code for processing the file
})

你有这个概念。您需要传递文件列表,然后处理它们。匿名函数应该完成处理单个文件并返回所需结果的整个过程

我的建议是,首先使用常规的
lappy
sapply
来完成这项工作,然后启动并行后端,导出您可能需要的所有必要库和对象

parLapply(cl, X = files, FUN = function(x, ...) {
  ... code for processing the file
})

它对我不起作用,因为我使用的是“data.table”包,当通过“fread”(内部parlappy函数)读取表时,我得到了一个错误,我无法读取文件@大数据没有(可复制的)代码很难说。如果您提供一段代码(生成数据、写入磁盘、使用fread读取…),我可能可以尝试任何使其并行工作的方法。我更新了由fread函数读取的代码,我的意思是我在您的函数中包含了这一行-我的错误是:checkForRemoteErrors(val)中的错误:7个节点产生的错误;第一个错误:找不到函数“fread”-将后台R工作进程视为新的R会话(以
R--vanilla
开头)。在新的R会话中,如何确保找到
fread()
。。。通过使用
库(“data.table”)
,正确吗?您可以将其添加到函数中,或者在
parlappy()之前使用
clusterEvalQ()
。或者,您可以使用
data.frame::fread()
调用该函数。它对我不起作用,因为我使用的是“data.table”包,当通过“fread”(parlappy函数内部)读取表时,我出现了无法读取文件的错误@大数据没有(可复制的)代码很难说。如果您提供一段代码(生成数据、写入磁盘、使用fread读取…),我可能可以尝试任何使其并行工作的方法。我更新了由fread函数读取的代码,我的意思是我在您的函数中包含了这一行-我的错误是:checkForRemoteErrors(val)中的错误:7个节点产生的错误;第一个错误:找不到函数“fread”-将后台R工作进程视为新的R会话(以
R--vanilla
开头)。在新的R会话中,如何确保找到
fread()
。。。通过使用
库(“data.table”)
,正确吗?您可以将其添加到函数中,或者在
parlappy()之前使用
clusterEvalQ()
。或者,您可以使用
data.frame::fread()
调用该函数。