【发布时间】:2023-09-05 11:32:01
【问题描述】:
我已经在这里引用了这篇文章。 converting a Python list to an R numeric vector
我遇到了同样的错误,但提供的解决方案对我不起作用,所以我将其发布。我在Linux中使用的是python 2.7和rpy2对应的最新版本
我尝试使用rpy2从python调用R函数,我的前几行如下。
import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
import rpy2.robjects.numpy2ri
rpy2.robjects.numpy2ri.activate()
r=robjects.r
astsa=importr('astsa')
astsa.acf2(L, 3) # L:a numeric list returned by my omitted code,I checked
错误如下:
Traceback (most recent call last):
File "/home/jin/Desktop/main.py", line 63, in <module>
astsa.acf2(traffic[0], 3)
File "/usr/lib/python2.7/dist-packages/rpy2/robjects/functions.py", line 86, in __call__
return super(SignatureTranslatedFunction, self).__call__(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/rpy2/robjects/functions.py", line 35, in __call__
res = super(Function, self).__call__(*new_args, **new_kwargs)
RRuntimeError: Error in stats::acf(series, max.lag, plot = FALSE) : 'x' must be numeric
【问题讨论】:
-
错误来自 R:它需要一个数字向量,而 L 可能是一个列表(查看来自 R 的错误消息)
-
这是真的,但是当我尝试使用以前的参考链接将 python 列表转换为 R 向量时,它没有通过,这就是我发布的原因
-
如果你能提供一个自包含的例子就更容易解释发生了什么(这里有一个“我在这里做事,但我所做的一切都是正确的”中间的空白,这确实表明它包含问题的来源和解释)
-
您可以在最后一行之前添加一个赋值行,例如 L=[1,2,3,4,5,6],错误消息仍然存在。确保您已安装 astsa R 软件包。谢谢
-
好的,我明白了,你需要多一行先调用R函数L = robjects.FloatVector(L)