无法在 R 中并行化具有多个参数的函数

Ros*_*hel 1 parallel-processing r mclapply

我尝试并行化一个简单的函数,该函数将两个数字相加并在库中R使用时打印结果。这是我的代码:mclapplyparallel

\n
library(doParallel)\nt = list(list(1,1),list(2,2),list(3,3))\nf <- function (a,b){\n    print(a + b)\n}\nmclapply(t,f)\n
Run Code Online (Sandbox Code Playgroud)\n

但它返回错误:

\n
Warning message in mclapply(t, f):\n\xe2\x80\x9call scheduled cores encountered errors in user code\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n
[[1]]\n[1] "Error in print(a + b) : argument \\"b\\" is missing, with no default\\n"\nattr(,"class")\n[1] "try-error"\nattr(,"condition")\n<simpleError in print(a + b): argument "b" is missing, with no default>\n\n[[2]]\n[1] "Error in print(a + b) : argument \\"b\\" is missing, with no default\\n"\nattr(,"class")\n[1] "try-error"\nattr(,"condition")\n<simpleError in print(a + b): argument "b" is missing, with no default>\n\n[[3]]\n[1] "Error in print(a + b) : argument \\"b\\" is missing, with no default\\n"\nattr(,"class")\n[1] "try-error"\nattr(,"condition")\n<simpleError in print(a + b): argument "b" is missing, with no default>\n
Run Code Online (Sandbox Code Playgroud)\n

有人可以告诉我我在这里做错了什么吗?

\n

我尝试搜索如何并行运行具有多个参数的函数,但没有找到答案。

\n

小智 5

mclapply正在为列表中的每个元素调用该函数,该列表本身就是一个列表。因此,每次调用该函数时,您都会向其传递一个列表,而不是其他任何内容。您需要解压函数中的列表:

library(doParallel)
t = list(list(1,1),list(2,2),list(3,3))
f <- function (a){
  print(a[[1]] + a[[2]])
}
mclapply(t,f)
Run Code Online (Sandbox Code Playgroud)