【发布时间】:2015-10-19 19:43:10
【问题描述】:
我正在为我自己没有编写的 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[][] 不正确。无论如何,任何可以指导我解决问题的帮助都将受到欢迎!
【问题讨论】: