我有一个python脚本Test.py,它在下面运行一个R脚本Test.R:
import subprocess
import pandas
import pyper
#Run Simple R Code and Print Output
proc = subprocess.Popen(['Path/To/Rscript.exe',
'Path/To/Test.R'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = proc.communicate()
print stdout
print stderrR脚本如下:
library("methods")
x <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(2,4,6,8,10,12,14,16,18,20)
data <- data.frame(x,y)我如何将R数据帧(或任何R对象)传递给Python?我很难让Rpy2在windows上工作,我看过这个链接使用PypeR,但是它在Python代码中使用了大量的内联R代码,我真的很想把这些代码保存在单独的文件中(或者这种做法被认为是可以接受的?)谢谢。
发布于 2014-12-04 14:42:59
我也经历过让Rpy2在mac上工作以及使用相同的方法通过子过程直接从python调用R的问题;我也同意保持文件分离有助于管理复杂性。
首先,将数据从R导出为.csv (同样是通过子进程调用脚本):
write.table(data, file = 'test.csv')在此之后,您可以作为python大熊猫数据框架(熊猫)导入:
import pandas as pd
dat = pd.read_csv('test.csv')
dat
row x y
1 1 2
2 2 4
3 3 6
4 4 8
5 5 10
6 6 12
7 7 14
8 8 16
9 9 18
10 10 20https://stackoverflow.com/questions/27276051
复制相似问题