【问题标题】:convert list in Python to vector in R将 Python 中的列表转换为 R 中的向量
【发布时间】: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)

标签: python r rpy2


【解决方案1】:

您可以在 Python 上轻松导出使用panda 生成的数据框:

import numpy as np              
import pandas as pd  

创建数据框并导出:

mydataFrame.to_csv("path/to/mydataFrame.csv")

并在 R 中使用read.csv 导入数据框。data$column 将为您提供您的列表。

【讨论】:

    最近更新 更多