Разверните формулу R - PullRequest
       2

Разверните формулу R

0 голосов
/ 27 февраля 2019

Это может показаться простым вопросом, но есть ли быстрый и надежный способ расширить формулу, например

f=formula(y ~ a * b )

до

y~a+b+ab

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Я бы попробовал это:

f = y ~ a * b
reformulate(labels(terms(f)), f[[2]])
# y ~ a + b + a:b

Он также работает на более сложных формулах и опирается на большее количество внутренних элементов.(Я предполагаю, что вы хотите получить полезный formula объект, поэтому в результате a:b будет лучше, чем ab в вопросе или a*b в ответе БД.)

f = y ~ a + b * c
reformulate(labels(terms(f)), f[[2]])
# y ~ a + b + c + b:c

f = y ~ a + (b + c + d)^2
reformulate(labels(terms(f)), f[[2]])
# y ~ a + b + c + d + b:c + b:d + c:d
0 голосов
/ 27 февраля 2019
vec = all.vars(f)
reformulate(c(vec[2:3], paste(vec[2:3], collapse = "*")), vec[1])
#y ~ a + b + a * b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...