python - 使用 PypeR 从 Python 内部执行 R 文件
问题描述
我目前的工作项目是编写一个 Python 程序,该程序在各个方面都必须依赖于 R。由于我不太了解 R,而帮助我的人也不太了解 Python,因此实际的 R 代码不在我的程序。相反,他打开记事本,将 R 代码放在那里,然后将其保存为(name).r
. 执行时,输出被写入一个 txt 文件,然后 Python 可以读取该文件。
我所要做的就是让 Python 让 R 运行(name).r
我试过使用subprocess.run
. 这工作了一段时间,然后由于某种未知的原因停止工作,现在什么也不做。然后我尝试使用 rpy2,它也工作了一段时间;但现在看起来安装已损坏,我无法重新安装它。
我现在想尝试第三个选项:PypeR。我用过pip install pyper
。看起来很成功。
为了简单起见,我打开记事本并输入以下内容,并将其保存为hello.r
:
message <- 'goodbye'
write.table(message,'C:/Users/(my name)/Desktop/(folder)/goodbye.txt',row.names=FALSE,col.names=FALSE)
手动打开 R 并一次一个地复制粘贴行确实有效。但我无法让它从 Python 中工作。以下是我尝试过的一些事情(我总是放在import pyper
最前面):
pyper.runR("source('C:/Users/(muy name)/Desktop/(folder)/hello.r')")
这给出了 NameError: name 'dump_stdout' is not defined
pyper.R("source('C:/Users/(my name)/Desktop/(folder)/hello.r')")
这给出了 FileNotFoundError: [WinError 2] The system cannot find the file specified
r=pyper.R("C:/Program Files/R/R-3.4.1/bin/i386/Rgui.exe")
r("source('C:/Users/(my name)/Desktop/(folder)/hello.r')")
这会导致 RGui 打开一个空白的 R 控制台。然后什么也没有发生。当我单击返回 Python 时,控制台显示 Python 很忙,直到我单击停止按钮,然后我得到“OSError: [Errno 22] Invalid argument
执行 hello.r 的正确方法是什么?
谢谢
解决方案
看来我明白了。这有效:
r=pyper.R(RCMD="C:/Program Files/R/R-3.4.1/bin/R")
r.run("source('C:/Users/(my name)/Desktop/(folder)/hello.r')")
推荐阅读
- python - 如何对一组别名进行分类以识别一个人
- excel-formula - 从参考表中提取前两个数据点
- sql-server - SSRS 参数未动态更新 - 每月最后一天
- javascript - 为什么当我单击添加按钮时,每次单击都会多次附加我的标签?
- java - https之后的spring boot安全块静态资源
- navigation - UI5 - ObjectPage 是否有等效于 Page 属性的 showNavButton?
- c# - CS0029 编译错误 - 将整数输出到文本框时的隐式转换
- jquery - video.js 使用数据库中的 json 创建动态播放列表
- svg - 使用 SVG 过滤器 feMatrixColor 在 HTML 页面中的色度键
- reactjs - 带有 jsx 的脚本和不带 jsx 的脚本不能在同一页面上工作