2011-07-26 3 views
1

Je travaille avec rpy2 sur Ubuntu 1104. Je suis le fichier COX. Les étapes données dans le fichier sont dans R. Je dois faire les mêmes étapes en python en utilisant rpy2. Je n'ai reçu aucun tutoriel avec rpy2. J'ai réussi à écrire la suite,Erreur dans rpy2- Aucune observation (non manquante)

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) 

Mais je reçois l'erreur suivante,

>>> 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 

Suis-je manque quelque chose? Je n'ai aucune expérience antérieure sur R. Je ne suis pas sûr que les données de la fonction coxph doivent être au format de données. Toute aide est appréciée.

Ceci est lien vers Rossi.txt

Répondre

2

Vous avez lu les données à l'aide read.csv avec septembre remplacés par un espace unique, alors que le fichier a deux espaces. Cela fait R interpréter cela comme une existence de colonnes vides, qui alors mess avec les noms de colonnes et enfin créer une erreur dans coxph.

Lisez les données avec read.table, et ça devrait aller.

+1

Salut mbq, thnks pour vos ans. Cela a fonctionné et m'a sauvé. A noter également, RPY2 change les noms de colonnes comme, ** arrest ** à ** X.arrest. ** Cela ne devrait pas arriver. '>>> 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

Moi aussi, j'utilise' X <- cbind (var1, var2, ... varn) 'comment résoudre ceci? –