gpt4 book ai didi

rJava:传递二维字符串数组作为函数输入

转载 作者:行者123 更新时间:2023-12-01 17:18:31 25 4
gpt4 key购买 nike

在我的 java 类中,我编写了 3 个测试函数,如下所示:

public void try2dStringArray(String[][] arr) {
System.out.println(arr.length);

}
public void try1dStringArray(String[] arr) {
System.out.println(arr.length);

}
public void try2dDoubleArray(double[][] arr) {
System.out.println(arr.length);

}

在 R 部分中,我运行以下命令:

library(rJava)
.jinit('/path/to/my/jar/app.jar')
obj <- .jnew('somepackage.Someclass')
doubleMatrix <- rbind(c(1,2), c(3,4))
stringMatrix <- rbind(c('a', 'b'), c('c', 'd'))
stringArray <- c('a', 'b')

result <- .jcall(obj,"V","try1dStringArray",
.jarray(stringArray, dispatch = T))
result <- .jcall(obj,"V","try2dDoubleArray",
.jarray(doubleMatrix, dispatch = T))
result <- .jcall(obj,"V","try2dStringArray",
.jarray(stringMatrix, dispatch = T))

只有最后一个错误:

Error in .jcall(obj, "V", "try2dStringArray", .jarray(stringMatrix, dispatch = T)) : 
method try2dStringArray with signature ([[Ljava.lang.String;)V not found

在这种情况下,String[][]double[][] 有何不同?我该如何修复它?

最佳答案

起初,我认为.jarray无法从字符正确创建String[][] java数组R 矩阵。我错了,运行OP中的代码时收到的错误证明了这一点:

.jcall(obj,"V","try2dStringArray",.jarray(stringMatrix, dispatch = T))
#Error in .jcall(obj, "V", "try2dStringArray", .jarray(stringMatrix, dispatch = T)) :
#method try2dStringArray with signature ([[Ljava.lang.String;)V not found

可以看出,签名 (([[Ljava.lang.String;)V) 似乎是正确的(双 [[ 应该说我们实际上通过了一个 String[][] 对象),但由于某种原因 .jcall 找不到它。

但是,在 rJava 中,也可以使用语法 obj$method(arg1,arg2,...) 调用方法,这样方法 try2dStringArray 被正确调用:

obj$try2dStringArray(.jarray(stringMatrix, dispatch = T))
#2

关于rJava:传递二维字符串数组作为函数输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36141334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com