2013-02-26 71 views
10

我從來沒有使用過rpy2,但我只是想知道是否可以用它來保存一個R可讀文件中的python對象(一個pandas DataFrame)。我無法在這些環境之間移動對象,主要是因爲我使用的是Windows,數據源是Excel文件。是的,這種類型的單元格帶有文本,包括引號,換行符和CSV無法充分處理的所有內容。我可以使用rpy2將熊貓數據框保存到.Rdata文件嗎?

我通常依賴於XLConnectJars,但它似乎被打破

Installing package(s) into ‘C:/Program Files/R/library’ 
(as ‘lib’ is unspecified) 
trying URL 'http://cran.csiro.au/bin/windows/contrib/2.15/XLConnectJars_0.2-4.zip' 
Content type 'application/zip' length 16538311 bytes (15.8 Mb) 
opened URL 
downloaded 15.3 Mb 

Warning in install.packages : 
    downloaded length 16011264 != reported length 16538311 

大熊貓讀取它正常,但我需要使用R.

信息
+2

該警告不是錯誤。該包很可能仍然有效(我有間歇性地發出此警告,沒有任何實際問題) – mnel 2013-02-26 06:52:51

+0

@mnel失敗,出現錯誤:'package'XLConnectJars'0.2-0被發現,但== 0.2.4是'XLConnect'需要的 – dmvianna 2013-02-26 23:43:24

回答

7

您可以使用rpy2做到這一點。一旦你有了熊貓的數據,你就必須將它傳送給R. This link提供了Python Pandas和R data.frames之間的實驗接口。從網站複製了一個代碼示例:

from pandas import DataFrame 
import pandas.rpy.common as com 

df = DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C':[7,8,9]}, 
       index=["one", "two", "three"]) 
r_dataframe = com.convert_to_r_dataframe(df) 

print type(r_dataframe) 
<class 'rpy2.robjects.vectors.DataFrame'> 

print r_dataframe 
     A B C 
one 1 4 7 
two 2 5 8 
three 3 6 9 
+0

那麼如何將'data.frame'寫入'.RData'文件? – RoyalTS 2015-08-28 13:32:03

+2

使用'save'功能。 – 2015-08-28 13:52:31

1

這裏是你如何讀/寫.RData文件與rpy2(因爲接受的解決方案已被棄用,不顯示怎麼保存到.RData文件):

import rpy2 
from rpy2 import robjects 
from rpy2.robjects import pandas2ri 
pandas2ri.activate() 

# read .RData file as a pandas dataframe 
def load_rdata_file(filename): 
    r_data = robjects.r['get'](robjects.r['load'](filename)) 
    df = pandas2ri.ri2py(r_data) 
    return df 

# write pandas dataframe to an .RData file 
def save_rdata_file(df, filename): 
    r_data = pandas2ri.py2ri(df) 
    robjects.r.assign("my_df", r_data) 
    robjects.r("save(my_df, file='{}')".format(filename)) 
相關問題