【问题标题】:Why does 'rmagic' %R cause an error when reading a file, while %%R does not?为什么 'rmagic' %R 在读取文件时会导致错误,而 %%R 不会?
【发布时间】:2014-03-30 20:34:15
【问题描述】:

使用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 上,而我尝试过的任何其他人都没有。

【问题讨论】:

    标签: python r csv pandas dataframe


    【解决方案1】:

    这是我以前见过的缺失值处理问题。每当您缺少值时,它都应该发生。我不确定我们是否应该将其视为错误。但是%R -n usda = read.csv('USDA.csv') 使用-n 禁止返回(numpy array)将避免该问题。

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

    如果你想在这种情况下在pythonR 之间来回传输数据,我认为使用pandas 然后convert_to_r_dataframeconvert_robject 会更好。

    【讨论】:

    • 但是为什么相同的代码应该适用于%%R,而不适用于%R。这对我来说似乎是一个错误。
    • 不同之处在于%%R 不会尝试返回值,但%R 会尝试返回值,并且在将data.frame 作为array 返回时它属于一部分。也可能被视为错误。但是R -> python 的转换无论如何在很多情况下都很棘手。
    • 啊,我现在明白了:-n 就是这样做的。有道理。
    猜你喜欢
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 2016-04-18
    • 2015-11-25
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多