Ros*_*hel 1 parallel-processing r mclapply
我尝试并行化一个简单的函数,该函数将两个数字相加并在库中R使用时打印结果。这是我的代码:mclapplyparallel
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但它返回错误:
\nWarning message in mclapply(t, f):\n\xe2\x80\x9call scheduled cores encountered errors in user code\xe2\x80\x9d\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有人可以告诉我我在这里做错了什么吗?
\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)