RCaller无法获得R程序的文本结果的处理

来源:互联网 发布:喵萝脸型数据 编辑:程序博客网 时间:2024/05/12 04:08

项目中使用 com.github.rcaller.rstuff.RCaller 调用 R 程序,对于卡方值的计算,我们使用了下面的程序:

RCaller caller = new RCallerTemplate() {@Overridepublic void addRCode(RCode code) {code.addRCode("data<-read.csv(\"C:/Users/Lenovo/Desktop/Matrix.csv\",header = T,sep = \"\")");code.addRCode("library(epicalc)");code.addRCode("ret<-cc(data$X2dm.0.2.pac,data$X2dm.0.2.notpac)");}}.createRCaller();caller.runAndReturnResult("ret");

但是始终找不到一个合适的RCaller API 可以拿到 ret 所代表的文本,其文本如下:


后来希望在 R 程序里直接将 ret 结果写到文件里,但是尝试了R 的 write.table 或者 write.csv 都没办法写出来。

几经google,才发现sink() 函数可以的:

RCaller caller = new RCallerTemplate() {@Overridepublic void addRCode(RCode code) {code.addRCode("data<-read.csv(\"C:/Users/Lenovo/Desktop/Matrix.csv\",header = T,sep = \"\")");code.addRCode("library(epicalc)");code.addRCode("ret<-cc(data$X2dm.0.2.pac,data$X2dm.0.2.notpac)");code.addRCode("sink(\"C:/Users/Lenovo/Desktop/output3.txt\")");code.addRCode("ret");code.addRCode("sink()");}}.createRCaller();caller.runOnly();

奇怪的是,我在 RGui 里面通过 source("C:\\Users\\Lenovo\\Desktop\\R1206.R") 调用等价的 R 程序,报了一个 warning:


ret 的文本结果也没有写到文件里,不知道为什么。



0 0
原创粉丝点击