2011-07-26 50 views
1

我在Ubuntu 1104上使用rpy2。我跟随COX文件。文件中给出的步骤在R中。我必须在使用rpy2的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

回答

2

您阅读使用read.csv用Sep设置为一个单一的空间数据,而该文件有两个空格。这使得R将此解释为空列的存在,然后将其与列名混淆并最终在coxph中产生错误。

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

+1

嗨,mbq,thnks为你的答案。它工作并救了我。另外要指出的是,RPY2正在改变列名,如**逮捕**到** X.arrest。**这不应该发生。 >>> >>> print csv.colnames [1]“X.week。” “X.arrest。” “X.fin。” “X.age。” “X.race。” “X.wexp。” [7]“X.mar。” “X.paro。” “X.prio。” “X.educ。” “X.emp1。” “X.emp2。” [13]“X.emp3”。 “X.emp4。” “X.emp5。” “X.emp6。” “X.emp7。” “X.emp8。”' – Netro

+0

我也是,我用'X < - cbind(var1,var2,... varn)'如何解决这个问题? – 2013-12-19 11:01:32