我已经使用Java 6中的静态方法准备了一个类,并将其导出到JAR文件中:

package pl.poznan.put.stemutil;

public class Stemmer {
    public static String stemText(String text) {
        Set<String> c = new HashSet<String>();
        ...
        return StringUtils.join(c, " ");
    }
}


我使用以下代码将其导入R:

require(rJava)
.jinit("java/stem-util.jar")
stem = J("pl.poznan.put.stemutil.Stemmer")$stemText


然后,当我直接调用它时,例如:

> stem("płotkami")
[1] "płotek płotka"


但是,当我尝试将其与tm_map()函数一起使用时,出现了问题:

> vc = VCorpus(vs, readerControl = list(language = "pl"))
> vc[[1]]
<<PlainTextDocument (metadata: 7)>>
 mirki mirkówny zaczynam wolne jutra ( ͡° ͜ʖ ͡°) #pijzwykopem #piwozlidla
> vc = tm_map(vc, stem)
Komunikat ostrzegawczy:
In mclapply(content(x), FUN, ...) :
  all scheduled cores encountered errors in user code
> vc[[1]]
[1] "Error in FUN(X[[1L]], ...) : \n  Sorry, parameter type `NA' is ambiguous or not supported.\n"
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError in FUN(X[[1L]], ...): Sorry, parameter type `NA' is ambiguous or not supported.>


我做错了什么?

最佳答案

最后添加mc.cores参数对我有用。但是,这是一种解决方法,而不是适当的解决方案。

vc = tm_map(vc, content_transformer(stem), mc.cores=1)

关于java - 用rJava导入的静态Java函数不适用于tm_map(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27660155/

10-12 22:39
查看更多