Python:RRuntimeError:(函数(data = NA,dim = length(data),dimnames = NULL)中的错误:'dims'不能长度为0
问题描述:
我想从python调用R函数,但由于某种原因我还不知道,我得到当我转换数字至R,而不是一个矩阵(数据帧)和rPython:RRuntimeError:(函数(data = NA,dim = length(data),dimnames = NULL)中的错误:'dims'不能长度为0
例如一个RRuntimeError,考虑下面简单的例子
import rpy2.robjects as robjects, pandas as pd, numpy as np
from rpy2.robjects import r
from rpy2.robjects.numpy2ri import numpy2ri
from rpy2.robjects.packages import importr
df= pd.DataFrame(np.random.random((108, 2)), columns=['Number1','Number2'])
p = 3
resi1=np.array(df, dtype=float)
p1=np.array(p, dtype=float)
r_resi = numpy2ri(resi1)
r_p1= numpy2ri(p1)
则输出是
---------------------------------------------------------------------------
RRuntimeError Traceback (most recent call last)
<ipython-input-1-7970a0b7c100> in <module>()
11
12 r_resi = numpy2ri(resi1)
---> 13 r_p1= numpy2ri(p1)
D:\Anaconda3\lib\site-packages\rpy2\robjects\numpy2ri.py in numpy2ri(o)
80 #FIXME: no dimnames ?
81 #FIXME: optimize what is below needed/possible ? (other ways to create R arrays ?)
---> 82 res = rinterface.baseenv['array'](vec, dim=dim)
83 # R does not support unsigned types:
84 elif o.dtype.kind ==
"u":
RRuntimeError: Error in (function (data = NA, dim = length(data), dimnames = NULL) :
'dims' cannot be of length 0
我不确定这里发生了什么问题?
答
转换器numpy数组 - > R数组需要数组的维数。这里没有:
>>> p1
array(3.0)
>>> p1.shape
()