我目前的工作项目是编写一个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:未定义名称'dump_stdout‘
pyper.R("source('C:/Users/(my name)/Desktop/(folder)/hello.r')")这将显示FileNotFoundError: WinError 2系统找不到指定的文件
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控制台。然后什么都没发生。当我单击back to Python时,控制台显示Python正忙,直到我单击halt按钮,然后我得到"OSError: Errno 22 Invalid argument
执行hello.r的正确方式是什么?
谢谢
发布于 2020-01-24 12:06:16
看起来我明白了。这是可行的:
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')")https://stackoverflow.com/questions/59890037
复制相似问题