我在Python中有一个数学优化算法,每次必须评估函数值时,我都必须调用R脚本,在该脚本中编写了仿真代码(基于仿真的优化)。 在尝试链接这两个代码之前,我想了解如何链接更容易的东西。 假设我有这个小的R脚本:
x <- c(1,2,3,4,5,6)
y <- c(2,3,4,54)
x1 <- mean(x)
y1 <- mean(y)
z <- x1 + y1
print(z)
我想从Spyder(Anaconda)调用它,以便在我的控制台上显示z。 我已经阅读了有关rpy2库的信息,但据我了解(如果我输入错了,请更正),我应该用Python编写等效的R代码。 有谁知道更简单的方法吗? (我无法在R中很好地编写代码,因此,我将无法翻译我拥有的仿真代码)。 如有必要,R作为Anaconda安装在Windows环境中。 先感谢您!
答案 0 :(得分:0)
尝试了其他几个选项之后,子流程似乎运行良好。您可以通过子进程从Python运行R脚本,并提供函数值作为参数(x):
def R_script_runner(x):
import subprocess
output=subprocess.run(
["your_path_to_R_source_folder/Rscript.exe", "your_path_to_R_script/R_script.R", x],
shell=True, stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE).stderr
return output
R脚本将执行应做的事情。该函数返回的输出主要用于调试目的,因此您可以打印输出或进行其他评估。