Я бы попробовал это:
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