【问题标题】:Using Rserve with java and want to calculate t.test. Cant get result back to java将 Rserve 与 java 一起使用并想计算 t.test。无法将结果返回给java
【发布时间】:2016-11-12 09:31:01
【问题描述】:

使用 Rserve 中的公式遇到了这个问题。我尝试使用doubleint,但这也不起作用。这是我想要从 R 中返回的一段文本。描述 CI。但结果似乎并没有回到 java 应用程序。我已经尝试了 R 中的命令并且它们在那里工作。不知道为什么它不起作用。 我得到了这个代码:

package rservedem;

import java.io.FileInputStream;
import java.io.FileNotFoundException;


import java.util.Scanner;
import org.rosuda.REngine.*;
import org.rosuda.REngine.Rserve.*;
/**
 *
 * @author Carl
 */
public class RserveDem {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        RConnection connRserve;

         Scanner inputStream = null;
                    try {
                        inputStream = new Scanner(new FileInputStream("C:/vikt-fore_data2Update.csv")); //läser in data från fil


                }
                     catch (FileNotFoundException e) {
                        System.out.println("Filen hittades inte! Stänger av...");
                        System.exit(0);
                    }
     inputStream.useDelimiter(",");


     int vikt;

                    double [] memberArray = new double[157];
                    for (vikt = 0; vikt < memberArray.length; vikt++) {



                                memberArray [vikt] = Double.valueOf(inputStream.next());

                    }

        try {


       connRserve = new RConnection();
       connRserve.assign("memberArr", memberArray);
       String toRserveForProcessing = "t.test(memberArr);";


       System.out.println("Den skapade strängen som skickas till Rserve " + toRserveForProcessing);

       String summan = connRserve.eval(toRserveForProcessing).asString();
       System.out.println ("Svaret från rserve " + summan);

   }
    catch(RserveException ex)
    {
        System.out.println(ex.getMessage());
    }
   catch (REXPMismatchException ex)
   {
       System.out.println(ex.getMessage());
   }
        catch (Exception e)
{
    System.out.println("Seomthing went wrong, but it's not Rserve: " +e.getMessage());
    e.printStackTrace();
}
    }

}

我试图搜索错误消息,但找不到它的含义。获得有关如何执行命令的一些想法并将结果返回到 java 应用程序的输出窗口中将非常有帮助。 我得到这个错误:

attempt to access org.rosuda.REngine.REXPGenericVector as String

感谢您的帮助!

【问题讨论】:

    标签: java r rserve


    【解决方案1】:

    connRserve.eval(toRserveForProcessing).asString(); 中尝试connRserve.eval(toRserveForProcessing).toDebugString();

    由于您尝试将向量用作字符串的异常状态,如果您想访问结果表达式,您必须正确访问它类型。在这种情况下,您应该能够调用asList(),然后使用访问器方法访问向量中的每个项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-20
      • 2019-05-20
      • 1970-01-01
      • 2015-09-27
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多