从命令行静默运行R,将结果导出到JSON

从命令行静默运行R,将结果导出到JSON,json,r,node.js,Json,R,Node.js,如何从shell调用R脚本(例如从Node.js exec)并将结果导出为JSON(例如返回到Node.js) 下面的R代码基本上可以工作。它读取数据,拟合模型,将参数估计值转换为JSON,并将其打印到标准输出: #!/usr/bin/Rscript --quiet --slave install.packages("cut", repos="http://cran.rstudio.com/"); install.packages("Hmisc", repos="http://cran.rstu

如何从shell调用R脚本(例如从Node.js exec)并将结果导出为JSON(例如返回到Node.js)

下面的R代码基本上可以工作。它读取数据,拟合模型,将参数估计值转换为JSON,并将其打印到标准输出:

#!/usr/bin/Rscript --quiet --slave
install.packages("cut", repos="http://cran.rstudio.com/");
install.packages("Hmisc", repos="http://cran.rstudio.com/");
install.packages("rjson", repos="http://cran.rstudio.com/");
library(rjson)
library(reshape2);

data = read.csv("/data/records.csv", header = TRUE, sep=",");
mylogit <- glm( y ~ x1 + x2 + x3, data=data, family="binomial");
params <- melt(mylogit$coefficients);
json <- toJSON(params);
json
The downloaded binary packages are in
    /var/folders/tq/frvmq0kx4m1gydw26pcxgm7w0000gn/T//Rtmpyk7GmN/downloaded_packages

The downloaded binary packages are in
    /var/folders/tq/frvmq0kx4m1gydw26pcxgm7w0000gn/T//Rtmpyk7GmN/downloaded_packages
[1] "{\"value\":[4.04458733165933,0.253895751245782,-0.1142272181932,0.153106007464742,-0.00289013062471735,-0.00282580664375527,0.0970325223603164,-0.0906967639834928,0.117150317941983,0.046131890754108,6.48538603593323e-06,6.70646151749708e-06,-0.221173770066275,-0.232262366060079,0.163331098409235]}"
除非R进程不会停止打印到标准输出。我尝试了
--安静--奴隶--安静
,这些都有点帮助,但还不够。以下是发送到stdout的内容:

#!/usr/bin/Rscript --quiet --slave
install.packages("cut", repos="http://cran.rstudio.com/");
install.packages("Hmisc", repos="http://cran.rstudio.com/");
install.packages("rjson", repos="http://cran.rstudio.com/");
library(rjson)
library(reshape2);

data = read.csv("/data/records.csv", header = TRUE, sep=",");
mylogit <- glm( y ~ x1 + x2 + x3, data=data, family="binomial");
params <- melt(mylogit$coefficients);
json <- toJSON(params);
json
The downloaded binary packages are in
    /var/folders/tq/frvmq0kx4m1gydw26pcxgm7w0000gn/T//Rtmpyk7GmN/downloaded_packages

The downloaded binary packages are in
    /var/folders/tq/frvmq0kx4m1gydw26pcxgm7w0000gn/T//Rtmpyk7GmN/downloaded_packages
[1] "{\"value\":[4.04458733165933,0.253895751245782,-0.1142272181932,0.153106007464742,-0.00289013062471735,-0.00282580664375527,0.0970325223603164,-0.0906967639834928,0.117150317941983,0.046131890754108,6.48538603593323e-06,6.70646151749708e-06,-0.221173770066275,-0.232262366060079,0.163331098409235]}"

在下面的帖子中运行
R--silent--slave CMD BATCH model.R
,仍然会导致大量无关文本打印到
model.Rout


这些选项只会停止R自己的系统消息的打印,而不会停止另一个R功能的打印。否则,您将停止打印最后一行,并且无法将json发送到标准输出

这些消息来自
install.packages
,请尝试:

 install.packages(-whatever-, quiet=TRUE)
它声称要减少产量。如果它将其减少到零,则工作完成


如果没有,那么您可以使用
sink
重定向stdout,或者在
capture.output

Aha中运行东西,就是这样!最后一个小调,有没有办法抑制前导“
[1]
”,如
[1]“{\“value\”:[4.04458733165933,
这是一个标签,告诉您它是一个长度为1的向量,它来自于在命令行上命名某个内容时发生的默认打印相反,它将打印没有标签的原始字符串。而且,它不会转义引号,这可能是您想要的。。。