Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从rJava中的Java对象访问数据_Java_R_Rjava - Fatal编程技术网

从rJava中的Java对象访问数据

从rJava中的Java对象访问数据,java,r,rjava,Java,R,Rjava,我一直在尝试学习rJava在我编写的一组Java应用程序和R之间来回传递数据以进行分析。我有一个带有签名的Java方法 public double[][] method(void) 我在R中要做的是如下 library("rJava") .jinit(parameters="-Xmx10240m") s <- .jarray("string", "mainArgs") javaobj <- .jnew("JavaClass", s) data <- .jcall(javaob

我一直在尝试学习rJava在我编写的一组Java应用程序和R之间来回传递数据以进行分析。我有一个带有签名的Java方法

public double[][] method(void)
我在R中要做的是如下

library("rJava")
.jinit(parameters="-Xmx10240m")
s <- .jarray("string", "mainArgs")
javaobj <- .jnew("JavaClass", s)
data <- .jcall(javaobj, "[[D", "method")
我试过了

as.list(data)
as.list(data[1])
as.list(data, simplify=TRUE)
.jsimplify(trees)
.jcastToArray(data)
.jevalArray(data)
.jevalArray(data, simplify=TRUE)

我确信我缺少的是显而易见的,但我就是无法让它工作。

您的Java方法正在返回一个数组数组。出于某种原因,rJava的胁迫被这弄糊涂了,所以你必须帮助它

可以按如下方式转换单个行:

r_vector <- .jevalArray(data[[1]])
为完整起见,在R侧:

library(rJava)
.jinit()
.jaddClassPath(path='.')

foo <- new( J('Foo'))
data <- foo$method()
one_row <- .jevalArray( data[[1]] )
r_matrix <- sapply(data, .jevalArray)

r_matrix <- do.call(rbind, lapply(data, .jevalArray))
库(rJava)
.jinit()
.jaddClassPath(路径='。)

foo我刚找到另一个推荐mat的源,另一个源是
r_matrix <- sapply(data, .jevalArray)
r_matrix <- do.call(rbind, lapply(data, .jevalArray))
import java.util.Arrays;

public class Foo {

    public double[][] method() {
        double[][] data = { {1.1, 1.2, 1.3},
                            {2.1, 2.2, 2.3} };

        return data;
    }

    public double[] getArray() {
    double[] data = {9.9,8.8,7.7};
    return data;
    }

    public static void main(String[] args) {
        Foo foo = new Foo();
        System.out.println(Arrays.toString(foo.method()));
    }
}
library(rJava)
.jinit()
.jaddClassPath(path='.')

foo <- new( J('Foo'))
data <- foo$method()
one_row <- .jevalArray( data[[1]] )
r_matrix <- sapply(data, .jevalArray)

r_matrix <- do.call(rbind, lapply(data, .jevalArray))