使用 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 安装错误“无法从注册表确定 JAVA_HOME”