为什么'rmagic'%R在读取文件时会导致错误,而%% R则不会?

时间:2014-03-30 20:34:16

标签: python r csv pandas dataframe

使用rmagic在阅读a particular file(而不是其他人)时,%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 个答案:

答案 0 :(得分:1)

这是我之前见过的一个缺失的价值处理问题。只要您缺少值,就会发生这种情况。我不确定我们是否应该将其视为一个错误。但%R -n usda = read.csv('USDA.csv')使用numpy来阻止返回(array -n)将避免此问题。

还应注意,如果%Rpull usda之后的%R -n usda = read.csv('USDA.csv'),您应该同样获得相同的例外。

如果您希望在这种情况下在pythonR之间来回传输数据,请使用pandas然后convert_to_r_dataframe和{{1}进行阅读我认为会更好地工作。