我正在使用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中的数据是否必须采用数据帧格式。 任何帮助表示赞赏。
这是指向Rossi.txt
的链接答案 0 :(得分:2)
您使用read.csv
读取数据,并将sep设置为单个空格,而文件有两个空格。这使得R将其解释为存在空列,然后混淆列名并最终在coxph
中创建错误。
使用read.table
读取数据,它应该没问题。