java - 如何使用 rjava 在 R 中调用 String[][]

标签 java r rjava

我正在为我自己编写的java代码准备一个R包装器(事实上我不懂java)。我是第一次尝试使用 rJava,但我正在努力使 .jcall 正确。

这是我为其编写包装器的 java 代码的摘录:

public class Model4R{

[...剪切...]

public String[][] runModel(String dir, String initFileName, String[] variableNames, int numSims) throws Exception {

[...剪切...]

dir 和 initFileName 是带有初始条件的目录和文件名的字符串,变量名称是我在 R 中这样写的字符串列表: c("var1", "var2", "var3", ...) 长度可以从 1 到 5。最后,numSim 是一个整数。

这是我的包装函数的暂定 R 代码:

runmodel <- function(dir, inFile, varNames, numSim){

hjw <- .jnew("Model4R")

out <- .jcall(hjw, "[[Ljava/lang/String", "runModel", as.character(dir), as.character(inFile), as.vector(varNames), as.integer(numSim))

return(out)

}

R 中的错​​误是:

Error in .jcall(hjw, "[[Ljava/lang/String", "runModel", as.character(dir),
: method runModel with signature (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)[[Ljava/lang/String not found

我怀疑 JNI 类型对于 String[][] 不正确。无论如何,任何可以指导我找到解决方案的帮助都将受到欢迎!

最佳答案

您在 String[][] 的 JNI 末尾缺少一个分号 - 它应该是 "[[Ljava/lang/String;"。另外,我认为您需要在 varNames 上调用 .jarray 而不是 as.vector 。 R 错误告诉您 rJava 认为第三个参数的类是 Ljava/lang/String; 而不是 [Ljava/lang/String;

关于java - 如何使用 rjava 在 R 中调用 String[][],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33222596/

相关文章:

java - 使用 rJava 将 String[][] 从 Java 传递到 R 时出现问题

java- 从 ID 获取时区

java - WindowManager addView() 不尊重 MATCH_PARENT

java - 如何强制 Eclipse 换行?

r - Plot.ly 和 R 中的堆积面积图

使用 View() 显示时,删除行会导致出现 "row.names"列

java - 如何使用 rJava 访问枚举?

java - Stripe 订阅创建没有附加付款来源

r - 年度比较时间序列ggplot2 R

rJava 库不工作。无法找到 jvm.dll