2014-03-30 41 views
1

使用rmagic我越來越%R%%R之間的行爲不一致閱讀a particular file(而不是其他人)時:爲什麼爲什麼'rmagic'%R讀取文件時會導致錯誤,而%% R不會?

%%R 

usda = read.csv("USDA.csv") 

工作,同時

%R usda = read.csv("USDA.csv") 

失敗

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-64-01ec3b4742c8> in <module>() 
----> 1 get_ipython().magic(u'R usda = read.csv("USDA.csv")') 

... 

/Library/Python/2.7/site-packages/numpy/core/numeric.pyc in asarray(a, dtype, order) 
    458 
    459  """ 
--> 460  return array(a, dtype, copy=False, order=order) 
    461 
    462 def asanyarray(a, dtype=None, order=None): 

TypeError: __float__ returned non-float (type rpy2.rinterface.NAIntegerType) 

再一次,這隻發生在the linked file,而不是與其他任何我試過的。

回答

1

這是我以前見過的缺失值處理問題。它應該發生在你缺少值的時候。我不確定我們是否應該將其視爲錯誤。但%R -n usda = read.csv('USDA.csv')使用-n來抑制返回(一個numpyarray)將避免該問題。

還應該注意,如果在%R -n usda = read.csv('USDA.csv')之後%Rpull usda,則應該同樣得到相同的異常。

如果你想擁有的數據來回pythonR之間在這樣的情況下,使用pandas然後convert_to_r_dataframeconvert_robject將更好地工作,我想讀它。

+0

但是爲什麼相同的代碼應該使用'%% R'而不是'%R'。這對我來說看起來像一個錯誤。 – orome

+0

區別在於'%% R'不會嘗試返回一個值,而是'%R'確實,並且在將'data.frame'作爲'array'返回時,它就成爲了一個部分。也可能被認爲是bug。無論如何,在很多情況下'R' - >'python'轉換都很棘手。 –

+0

啊,我現在明白了:這就是'-n'所做的。說得通。 – orome

相關問題