gpt4 book ai didi

java - 异常:"attempt to access org.rosuda.REngine.REXPGenericVector as String"

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:01 25 4
gpt4 key购买 nike

我有以下函数来读取 csv(有 18000 行和 21 列)并在 java 控制台中显示其内容。

public void rFun() {

Rsession instance = RConnect.getInstance();

instance.eval("load(\".RData\")");

instance.eval("g <- read.csv(\"Book2.csv\")");

REXP x = instance.eval("hh <- head(g,2)");

REXP x1 = instance.eval("nrow(hh)");
REXP x2 = instance.eval("ncol(hh)");
try {


int i = 0;
for(int j=0; j<x1.asInteger(); j++){
for(int k=0; k<x2.asInteger(); k++){
System.out.println("Element ["+(j+1)+"]["+(k+1)+"] = "+x.asStrings()[i]);
i++;
}
}

} catch (REXPMismatchException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

但是当我执行这个函数时,我得到了这个异常:尝试以字符串形式访问 org.rosuda.REngine.REXPGenericVector。如果我创建如下所示的数据框,这段代码将起作用:

instance.eval("xyz <- matrix(c(10,20,3,\"A\",40,50,60),nrow=2)");             
REXP x = instance.eval("df <- as.data.frame(xyz)");

我尝试将每列的数据类型转换为字符,然后检索值,但抛出了相同的异常。请帮忙。

最佳答案

使用以下语法:

for(int i=1; i<=x1.asInteger(); i++){
for(int j=1; j<=x2.asInteger(); j++){
REXP cls1 = instance.eval("c1 <- h["+i+","+j+"]");
System.out.println(cls1.asString());
}
}

无需将数据类型转换为字符。希望对您有所帮助。

关于java - 异常:"attempt to access org.rosuda.REngine.REXPGenericVector as String",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24926348/

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