rpy2 错误 - 没有(非缺失)观测值

1 投票
1 回答
4424 浏览
提问于 2025-04-16 22:16

我在Ubuntu 11.04上使用rpy2。现在我在跟着一个关于COX回归的文件,里面的步骤是用R语言写的。我需要用Python和rpy2来做同样的事情。

我没有找到关于rpy2的教程,但我写出了以下代码,

from rpy2.robjects.packages import importr
from rpy2.robjects import IntVector, Formula
import rpy2.robjects as ro
cox = importr("survival")
csv = ro.vectors.DataFrame.from_csvfile('Rossi.txt', header=True, sep=' ')
fmla = Formula('Surv(week, arrest) ~ fin + age + race + wexp + mar + paro + prio')
mod_aalison = cox.coxph (fmla, data=csv)

但是我遇到了以下错误,

>>> mod_aalison = cox.coxph (fmla, data=csv)
Error in function (formula, data, weights, subset, na.action, init, control,  : 
  No (non-missing) observations
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/rpy2/robjects/functions.py", line 83, 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)
rpy2.rinterface.RRuntimeError: Error in function (formula, data, weights, subset, na.action, init, control,  : 
  No (non-missing) observations

我是不是漏掉了什么?我之前没有使用过R语言。我不确定在coxph函数中,数据是否需要是数据框格式。

这是一个链接,指向Rossi.txt

1 个回答

2

你用 read.csv 读取数据时,把分隔符设置成了一个空格,但实际上文件里有两个空格。这就导致 R 认为有空的列存在,这样就会搞乱列的名称,最后在 coxph 里出现错误。

你可以试着用 read.table 来读取数据,这样应该就没问题了。

撰写回答