“'x'必须是非空数值向量” rpy2错误:为什么它不起作用?

时间:2019-03-28 20:26:54

标签: python r python-3.x pandas

我正在使用Colab和Python查找最适合我的数据的分布。我是新手,因此遇到很多问题。到目前为止,这是我的代码:

from rpy2.robjects import pandas2ri
from rpy2.robjects.packages import importr

MASS = importr('MASS')
pandas2ri.activate()

df_temp = pd.DataFrame()
df_temp["Values"] = [37.50,46.79,48.30,46.04,43.40,39.25]
ri_temp = pandas2ri.py2ri(df_temp)

params_temp = MASS.fitdistr(ri_temp, 'normal')
print(params_temp)

现在,有很多事情我还不了解。请尽可能地描述一下!:)例如,我不明白为什么必须使用pandas2ri.activate()。我的代码产生的错误是这样的:

/usr/local/lib/python3.6/dist-packages/rpy2/rinterface/__init__.py:146:
  RRuntimeWarning: Error in (function (x, densfun, start, ...)  : 

  'x' must be a non-empty numeric vector

...之间的回溯...

warnings.warn(x, RRuntimeWarning)
  RRuntimeError: Error in (function (x, densfun, start, ...)  : 

  'x' must be a non-empty numeric vector

那是什么问题?

我首先使用熊猫的原因是我将数据存储在列表中。如果我可以避免使用熊猫,那有什么选择呢?当我尝试简单地解析MASS.fitdistr(list, 'normal')时,也会给我带来错误。另外,也许有更好的替代方法,而不是使用r为给定列表数据找到最佳拟合分布?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这有助于:my_array = np.asarray(my_list)。然后使用该数组作为我的输入:params_temp = MASS.fitdistr(my_array, 'normal')

感谢akrun。