运行Rscript并传递一个字符串而不是文件

时间:2018-01-07 01:57:00

标签: python r escaping

我在python中调用Rscript。正常的电话很简单

retcode = subprocess.call("/usr/bin/Rscript --vanilla filename.r", shell=True)

但我遇到了处理HDFS R文件的挑战,所以我需要先读取文件,然后将整个代码组成一个字符串。当我尝试使用eval时:

retcode = subprocess.call("/usr/bin/Rscript --vanilla -e \"eval(parse(text=" + rcode_string + "))\"", shell=True)

无论是否有parse,R代码中的引号都会导致问题。 R代码中的每一个引号都是不可能的。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您可以通过标准输入将代码直接发送到data HAVE; amount_dollar = -2588;output; amount_dollar = .;output; amount_dollar = -24884;output; amount_dollar = -21267;output; amount_dollar = 70;output; run; 。根据{{​​3}},如果您指定Rscript作为文件名,它将从标准输入中读取。

从Python传递到标准输入看起来像这样:

-