Обобщение создания формулы в R

Я пытаюсь создать формулу в R в виде

Output~Var1+Var2+Var3

Для использования в модели. Кажется, это работает так: вы даете имя переменной, которое хотите предсказать, тильду, имена переменных, которые хотите использовать в качестве предикторов, а затем в более позднем аргументе вы даете фрейм данных, содержащий наблюдения этих переменных. Однако фрейм данных, который я использую, содержит довольно много переменных, и я не хочу вводить их все. Эти переменные также довольно часто меняют имена, поэтому было бы сложно продолжать изменять мой код. В сущности, я хочу знать, как писать

Output~(All the variables that aren't the output)

Хотя мне также нужно исключить некоторые другие переменные. Извините, что так ясно выразился, я не знаю, что происходит, формула не слишком помогла, и это не похоже ни на одно другое программирование или структуру R, которые я видел раньше.

Спасибо за любую помощь,

N


person N. McA.    schedule 23.12.2012    source источник
comment
Output~. ставит все остальное на правую сторону   -  person James    schedule 23.12.2012
comment
Спасибо. Как я могу исключить другую переменную? Будет ли это делать !Variable?   -  person N. McA.    schedule 23.12.2012
comment
Просто подмножьте кадр данных, указанный в параметре data, для переменных, которые вы хотите включить.   -  person Roland    schedule 23.12.2012
comment
или используйте Output~.-excluded_var   -  person Ben Bolker    schedule 01.09.2014


Ответы (2)


А, я нашел гораздо лучшее решение: функцию

reformulate(termlabels = colnames(InputTable), response = 'Prediction')

Создаст формулу из предоставленных вами строк. Управляйте именами столбцов по своему усмотрению, чтобы динамически выбирать, какие переменные используются в модели.

person N. McA.    schedule 23.12.2012

На самом деле документация по ?formula дает один из возможных ответов. Это, однако, чрезвычайно «хакерский» и один из наименее приятных способов, которые я могу себе представить для достижения этой цели.

## Create a formula for a model with a large number of variables:
xnam <- paste0("x", 1:25)
(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))))

т.е. вы просто склеиваете строку и используете ее как формулу.

person N. McA.    schedule 23.12.2012