example <- data.frame(
var1 = c(1, 2, 3, 4, 5, 6, 7, 8),
class = c(rep(1, 4), rep(2, 4))
)
example$class <- as.factor(example$class)
This question provides a fix for using substitute and as.name to create a formula for aov
, but I don't understand why the formula works for oneway.test
and lm
. Can someone explain?
fm <- substitute(i ~ class, list(i = as.name('var1')))
oneway.test(fm, example)
One-way analysis of means (not assuming equal variances)
data: var1 and class
F = 19.2, num df = 1, denom df = 6, p-value = 0.004659
lm(fm, example)
Call:
lm(formula = fm, data = example)
Coefficients:
(Intercept) class2
2.5 4.0
aov(fm, example)
Error in terms.default(formula, "Error", data = data) :
no terms component nor attribute