使用 rJava 导入的静态 Java 函数不适用于 tm_map()

Posted

技术标签:

【中文标题】使用 rJava 导入的静态 Java 函数不适用于 tm_map()【英文标题】:Static Java function imported with rJava doesn't work with tm_map() 【发布时间】:2015-02-23 22:39:58 【问题描述】:

我在 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.>

我做错了什么?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于使用 rJava 导入的静态 Java 函数不适用于 tm_map()的主要内容,如果未能解决你的问题,请参考以下文章

通过 rJava 在“dismo”中运行 maxent 时出现 java.awt.HeadlessException 错误

使 rJava 或 R 使用不同的(以前的)Java 版本

解惑rJava R与Java的快速通道

rJava 安装错误“无法从注册表确定 JAVA_HOME”

求助,我已经安装了rJava包了,为啥还会这样呢?感谢好心人

怎么安装r语言中的rjava包