我在Ruby脚本中运行R代码。 R代码创建一个JSON对象,该对象将返回到Ruby环境,以便最终可以编码并上传到亚马逊S3实例。
以下是Ruby脚本示例:
require "rinruby"
#Use R code
R.eval <<EOF
counter <- counts
source(file="rubytest.r")
EOF
这是Ruby脚本调用的示例R脚本:
library("jsonlite")
ls <- list("a", "b", "c", "d", "e")
testJSON <- toJSON(ls)
print(testJSON)
我猜测print()命令不是要走的路。任何帮助将不胜感激。
谢谢!
答案 0 :(得分:1)
我已成功找到一种方法将简单的JSON对象从R环境传递到Ruby环境:
require "rinruby"
require "json"
R.eval <<EOF
library("jsonlite")
ls <- list("a", "b", "c", "d", "e")
testJSON <- as.character(toJSON(ls))
EOF
data = JSON.parse R.testJSON
puts data
关键是使用as.character()函数强制JSON输出成为代码的R部分中的字符类。不确定这是否适用于更复杂的JSON对象。
答案 1 :(得分:0)
根据Gem readme file中提供的示例,您只需在R代码块中指定值,然后通过R
访问这些值:
R.eval <<EOF
library("jsonlite")
ls <- list("a", "b", "c", "d", "e")
testJSON <- toJSON(ls)
EOF
data = JSON.parse R.testJSON
(我可能会补充一点,这只是一个疯狂的猜测 - 我实际上并没有对此进行测试。)