Ошибка в rpy2 - Нет (не пропущено) наблюдений

1

Я работаю с rpy2 на Ubuntu 1104. Я следую за 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 должны быть в формате dataframe. Любая помощь приветствуется.

Это ссылка на Rossi.txt

Теги:
rpy2

1 ответ

2
Лучший ответ

Вы читаете данные, используя read.csv с sep, установленным в одно пространство, а файл имеет два пробела. Это заставляет R интерпретировать это как существование пустых столбцов, которые затем беспорядок с именами столбцов и, наконец, создают ошибку в coxph.

Прочитайте данные с помощью read.table, и все должно быть в порядке.

  • 1
    Привет mbq, спасибо за ваш ответ. Это сработало и спасло меня. Также стоит отметить, что RPY2 меняет имена столбцов, например, arrest, на 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."
  • 0
    Я тоже, я использую X <- cbind(var1,var2, ... varn) как решить эту проблему?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню