2015-09-21 9 views
2

Первый раз, используя реализацию RPy2 в Python. Попытка сделать односторонний ANOVA с двумя факторами. Он работает в R на другой машине, но Python не любит синтаксис. Любые мысли оцениваются!ANOVA синтаксис в RPy2

from rpy2.robjects import aov 

huanova = aov(formula = df1['human_den'] ~ df1['region']+df1['years']) 

Точки сообщения об ошибке в тильде.

huanova = aov(formula=df1['human_den'] ~ df1['region']+df1['years']) 
            ^
SyntaxError: invalid syntax 
+0

Какое сообщение об ошибке? –

+0

@CactusWoman Добавлено сообщение об ошибке. Просто простой SyntaxError – DJV

ответ

-1

Тильда ~ унарна в Python, но вы используете его как Binary. Вы можете:

huanova = aov(formula = df1['human_den'] + ~ df1['region']+df1['years']) 

Обратите внимание, что я добавил ПЛЮС перед Тильдой.

+0

Совсем нет (! @ Все). Тильда в R является частью определения формулы. Он не переводится на унарную тильду Python. Я проиграл из-за этого. – lgautier

+0

Я не знаю о тильде в R, но здесь OP получил синтаксическую ошибку, потому что тильда в Python унарна. Должен быть способ использовать тильду R, но не так. –

0

Согласно documentation about Formulae in Rpy2, вы должны передать формулу в виде строки. Это один из способов сделать это:

from rpy2.robjects import aov 
from rpy2.robjects import Formula 

formula = Formula('human_den ~ region + years') 
env = formula.environment 
env['human_den'] = df1['human_den'] 
env['region'] = df1['region'] 
env['years'] = df1['years'] 

huanova = aov(formula = formula) 
+0

'aov' не находится в' robjects'. – lgautier