【问题标题】:How can I call a R code from Spyder (python) Anaconda?如何从 Spyder (python) Anaconda 调用 R 代码?
【发布时间】:2019-08-01 02:17:31
【问题描述】:

我在 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 安装在 Windows 环境中,如 Anaconda。 先感谢您!

【问题讨论】:

  • 你签出reticulateR包了吗?
  • 我认为我们需要一个mcve 来测试这个

标签: python r anaconda spyder


【解决方案1】:

在尝试了几个其他选项后,子流程似乎工作得很好。您可以通过子进程从 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 脚本会做它应该做的事情。该函数返回的输出主要用于调试目的,因此您可以打印它或以其他方式评估..

【讨论】:

  • 如果您的 PATH 环境变量中有 R bin 文件夹,则无需指定 Rscript 文件夹。甚至在 cwd 参数中传递当前目录。但很可能,OP 需要传入和传出数据。
猜你喜欢
  • 2020-01-29
  • 2015-12-29
  • 2022-12-09
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 2018-01-19
相关资源
最近更新 更多