1
    import java.io.IOException;
    import java.lang.Runtime;
    import rcaller.RCaller;
    import rcaller.RCode;

    public class SurvivalAnalysis {
    public static void main(String[] args) throws IOException{

    RCode code = new RCode();
    RCaller caller = new RCaller();
    caller.setRscriptExecutable("path\Rscript.exe");

    String path="cmd /c start path\\SAbatch.bat";
    Runtime rn=Runtime.getRuntime();
    Process pr=rn.exec(path);
    Runtime.getRuntime().exec("cmd /c path/SurvivalAnalysis.r");

    code.addRCode("require(survival)");
    code.addRCode("require(flexsurv)");
    code.addRCode("DataTest <- read.csv('C:path/data.csv',header=TRUE, sep=',')");
    code.addRCode("TestModelF_W <- flexsurvreg(Surv(time,death,type='right') ~ timeZone1, data = DataTest, dist = 'weibull')");
    caller.runAndReturnResult("summary(TestModelF_W)");
    caller.setRCode(code);

}

}

我正在尝试使用 R 包 flexsurvreg 对 .CSV 数据文件执行生存分析。我的父代码在 Java 中,所以我从 java 调用 R。我正在使用 RCaller 包来执行此操作,基于SO 帖子。

运行代码时,我收到以下错误消息:

    [Fatal Error] Routput3149779333722388628:1:1: Premature end of file.
    packageExist<-require(Runiversal)
    if(!packageExist){
    install.packages("Runiversal", repos=" http://cran.r-project.org")
    }

    packageExist<-require(Runiversal)
    if(!packageExist){
    install.packages("Runiversal", repos=" http://cran.r-project.org")
    }

    cat(makexml(obj=summary(TestModelF_W), name="summary(TestModelF_W)"), 
    file="C:/Users/User/AppData/Local/Temp/Routput3149779333722388628")

    Exception in thread "main" rcaller.exception.RCallerExecutionException: 
    Can not handle R results due to : 
    rcaller.exception.RCallerParseException: Can not parse the R output: 
    org.xml.sax.SAXParseException; systemId: file:/C:/Users/Chaitu/AppData/Local/Temp/Routput3149779333722388628; lineNumber: 1; columnNumber: 1; Premature end of file.
at rcaller.RCaller.runAndReturnResult(RCaller.java:402)
at SurvivalAnalysis.main(SurvivalAnalysis.java:22)

为了调试,我尝试调用创建 R 脚本并直接从 Java 调用,但这似乎有同样的问题。RCaller 文档对此没有任何线索。

caller.R_source(path/SurvivalAnalysis.r");
caller.runOnly();
4

0 回答 0