java - rJava:从 R 创建零长度 Java 数组

标签 java arrays r java-native-interface rjava

我正在寻找rJava相当于:

String[] s;
s= new String[0];

我尝试过:

library(rJava)
.jinit()
s=.jarray(list(NULL), "[Ljava/lang/String;")

但是,当使用 jcall(..., s) 将其传递给需要 String[] 的方法时,rJava 会引发错误。

更新

为了让我的问题更清楚。
当然,我可以轻松地创建一个新的 jar(或修改现有的 jar)来托管一些 zeroArray() 方法,以便稍后从 R 调用,但我正在寻找一种基于 的解决方案在 rJava 上,这意味着使用标准 Java 对象或 rJava 或内部 rJava 函数提供的 jar 文件中的类。

最佳答案

如果我有这样的东西:

package utils;

public class RUsingStringArray {

        public void useArray(String [] array) {
          for(int i=0; i<array.length; i++ ) {
            String str = array[i];
          }
        }
        public int arrayLen(String [] array) {
                System.out.println("Class: " + array.getClass());
                return array.length;
        }
        public String [] createArray() {
                return new String[0];
        }
        public static void main(String [] arg) {

                RUsingStringArray obj = new RUsingStringArray();
                obj.useArray(obj.createArray());
                System.out.println("Len: " + obj.arrayLen(new String[0]) );
        }
}

方法,createArray会返回

> obj <- .jnew("utils.RUsingStringArray")
> s <- .jcall(obj, returnSig="[Ljava/lang/String;", method="createArray")
> s
character(0)

稍后您可以将其用作空字符串[]

.jcall(obj, returnSig="V", method = "useArray", s)

当然,这个也可以

> b <- character(0)
> .jcall(obj, returnSig="V", method = "useArray", b)

问题是,这是否是您正在寻找的东西。

更新:

在这种情况下,也许这对您来说更好?

> array <- .jarray(list(NULL), "java/lang/String")
> .jcall(obj, returnSig="V", method="useArray", array)

更新2:

这个怎么样;)

> array2 <- .jarray(character(0), "java/lang/String")
> .jcall(obj, returnSig="I", method="arrayLen", array2)
Class: class [Ljava.lang.String;
[1] 0
>

关于java - rJava:从 R 创建零长度 Java 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44502281/

相关文章:

java - JUnit 模拟,我应该使用哪个工具?

R:使用 lapply 添加新列

java - 如何将 REGEX 匹配项添加到我的 J2ME 项目中?

PHP获取数组中重复次数最多的值

arrays - 检查元胞数组是否是 Matlab 中另一个元胞数组的子集

php - 如何在具有键值对数据数组的表中一次插入多行

R - 将数字向量拆分为多个区间

r - 如何制作POSIXct的空向量

Java:为什么 String.format() 不能处理这个 Long 变量?

java - 我正在尝试掌握如何将界面从 android 转换为 Objective-C