2016-08-16 3 views
1

Я пытаюсь добавить термин к формуле модели в R. Это просто сделать, используя update(), если я введу имя переменной непосредственно в функцию обновления. Однако это не работает, если имя переменной находится в переменной.Использование переменной в update() в R для обновления формулы

myFormula <- as.formula(y ~ x1 + x2 + x3) 
addTerm <- 'x4' 

#Works: x4 is added 
update(myFormula, ~ . + x4) 
Output: y ~ x1 + x2 + x3 + x4 

#Does not work: "+ addTerm" is added instead of x4 being removed 
update(myFormula, ~ . + addTerm) 
Output: y ~ x1 + x2 + x3 + addTerm 

Добавление x4 через переменную может быть выполнено несколько более сложным способом.

formulaString <- deparse(myFormula) 
newFormula <- as.formula(paste(formulaString, "+", addTerm)) 
update(newFormula, ~.) 
Output: y ~ x1 + x2 + x3 + x4 

Есть ли способ получить обновление(), чтобы сделать это непосредственно, не требуя этих дополнительных шагов? Я пробовал вставить, разобрать и другие обычные функции, и они не работают.

Например, если используется paste0 выход

update(myFormula, ~ . + paste0(addTerm)) 
Output: y ~ x1 + x2 + x3 + paste0(addTerm) 

ли кто-нибудь какие-либо рекомендации о том, как использовать переменную в обновлении()?

Благодаря

ответ

4

Вы можете, вероятно, просто сделать:

update(myFormula, paste("~ . +",addTerm)) 
Смежные вопросы