tm_map在Mac上的R 3.0.1中有parallel :: mclapply错误

Dom*_*nik 17 parallel-processing r mclapply tm

我在平台上使用R 3.0.1:x86_64-apple-darwin10.8.0(64位)

我正在尝试使用tm库中的tm_map.但是当我执行这段代码时

library(tm)
data('crude')
tm_map(crude, stemDocument)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Warning message:
In parallel::mclapply(x, FUN, ...) :
  all scheduled cores encountered errors in user code
Run Code Online (Sandbox Code Playgroud)

有谁知道这方面的解决方案?

nog*_*pes 29

我怀疑你没有SnowballC安装包,这似乎是必需的.tm_map应该stemDocument使用所有文件运行mclapply.尝试stemDocument在一个文档上运行该函数,以便您可以提取错误:

stemDocument(crude[[1]])
Run Code Online (Sandbox Code Playgroud)

对我来说,我收到了一个错误:

Error in loadNamespace(name) : there is no package called ‘SnowballC’
Run Code Online (Sandbox Code Playgroud)

所以我只是继续安装SnowballC并且工作正常.显然,SnowballC应该是一种依赖.


znm*_*meb 17

我刚碰到这个.它花了我一些挖掘,但我发现了发生了什么.

  1. 我有一行代码'rdevel < - tm_map(rdevel,asPlainTextDocument)'

  2. 运行此操作会产生错误


    In parallel::mclapply(x, FUN, ...) :
      all scheduled cores encountered errors in user code

  1. 事实证明'tm_map'调用'parallel'中的一些代码,它试图找出你拥有多少个核心.要查看它的想法,请键入

    > getOption("mc.cores", 2L)
    [1] 2
    >

  1. 啊啊时刻!告诉'tm_map'调用只使用一个核心!

    > rdevel <- tm_map(rdevel, asPlainTextDocument, mc.cores=1)
    Error in match.fun(FUN) : object 'asPlainTextDocument' not found
    > rdevel <- tm_map(rdevel, asPlainTextDocument, mc.cores=4)
    Warning message:
    In parallel::mclapply(x, FUN, ...) :
      all scheduled cores encountered errors in user code
    > 

所以...有多个核心,而不是给你错误信息,'parallel'只是告诉你每个核心都有错误.没有帮助,平行!我忘记了点 - 函数名称应该是'as.PlainTextDocument'!

所以 - 如果你收到这个错误,在'tm_map'调用中添加'mc.cores = 1'并再次运行它.


小智 11

我在这个问题上找到了一个对我来说成功的答案:Charles Copley在他的回答中表明他认为新的tm包需要lazy = TRUE明确定义.

所以,你的代码看起来像这样

library(tm)
data('crude')
tm_map(crude, stemDocument, lazy = TRUE)
Run Code Online (Sandbox Code Playgroud)

我也尝试过没有SnowballC,看看它是否是这两个答案的组合.它似乎没有影响结果.