2014-12-03 29 views
0

後我有一個python腳本Test.py運行的R腳本Test.R如下:通道R對象到Python運行v腳本

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 stderr 

將R腳本如下:

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時遇到了很大的困難,並且我看到這個link使用PypeR,但它在Python代碼中使用了許多內聯的R代碼,我真的想保持代碼的獨立性文件(或者這種做法被認爲是可以接受的?)謝謝。

回答

0

我遇到過Rpy2也能在mac上工作的問題,並使用相同的解決方法,通過subprocess直接從python調用R;也同意保持文件分開有助於管理複雜性。

首先導出數據從R爲.csv(再次腳本通過子叫):

write.table(data, file = 'test.csv') 

之後,你可以作爲一個python大熊貓數據幀導入(Pandas):

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 20 
+1

是的,我想我可以將所有內容導出爲CSV格式,並以這種方式讀取到每個程序,我想我希望能夠在代碼中實現這一點。謝謝。 – gtnbz2nite 2014-12-11 18:39:44