1

我在 Ubuntu 1104 上使用 rpy2。我正在关注COX文件。文件中给出的步骤在 R 中。我必须使用 rpy2 在 python 中执行相同的步骤。我没有得到任何关于 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 中的 if 数据是否必须采用数据框格式。任何帮助表示赞赏。

这是指向Rossi.txt的链接

4

1 回答 1

2

read.csv您使用将 sep 设置为单个空格来读取数据,而文件有两个空格。这使得 R 将其解释为存在空列,然后与列名混淆,最后在coxph.

用 读取数据read.table,应该没问题。

于 2011-07-28T12:18:38.837 回答