从S-Plus拨打R?

时间:2010-01-06 02:42:39

标签: r s-plus s

有没有人有任何关于从S-Plus拨打R的好方法的建议?理想情况下,我只想将代码传递给R并获取数据,而无需编写任何过于精细的集成它们。

我应该补充一点,我熟悉Omegahat上的RinS包,但我还没有使用它。我的印象是,在Tibco接手之前,Insightful已经努力整合环境。

编辑:事实证明,RinS在Windows上不起作用。我发现最简单的解决方案就是使用Rscript。我可以使用system()命令从S-Plus中调用它。例如,这是一个简单的脚本:

#! Rscript --vanilla --default-packages=utils
args <- commandArgs(TRUE)
print(args)
print(1:100)
Sys.sleep(2)
res <- "hello world"
class(res) <- "try-error"
if(inherits(res, "try-error")) q(status=1) else q()

从S-Plus调用它:

system("rscript c://test.rscript 'some text'")

然后我将结果存储到文本文件中,并在脚本运行后将其导入S-Plus。

1 个答案:

答案 0 :(得分:5)

RSPlus 是我唯一知道的选项。我几乎每天都使用它大约一年,但是从R 2.7开始就没用过它。从您的Q开始,您似乎只想在SPlus中运行R,RSPlus当然可以这样做(R是一个单独的解释器,可通过由几个SPlus函数组成的接口访问,最常用的是'.R()'例如.R(“fivenum”,1:10)。

我认为我们正在谈论同样的事情,因为'RinS'是两个模块之一(SpinR是另一个),它们共同组成RSPlus(即,只有一个接口,无论你想要的方向如何--R到SPlus,或SPllus到R)。虽然当时对我来说并不明显,但我必须安装这两个模块才能让RinS工作。