Я хотел бы сделать функцию на основе результатов lm
.
Я делаю модель:
mod <- lm(log(speed)~dist + I(dist^2), data = cars)
names(summary(mod))
summary(mod)$coefficients[, 1]
, а затем делаю функция, которую я хочу использовать позже
calcVAL <-function(dist, mod) {
df <- data.frame(value = summary(mod)$coefficients[, 1])
df$var <- row.names(df)
row.names(df) <- NULL
print(df)
df[1,1] +
df[2, 1] * dist +
df[3, 1] * I(dist^2)
}
calcVAL(10, mod)
, что я хочу сделать по-другому, это то, что я хочу заменить аргумент dist
внутри функции calcVAL
, что функция берет имя из df
который создается сначала в функции (аналогично значениям коэффициента) ex. имя из позиции df[2, 2]
value
(Intercept) 1.7729012293
dist 0.0311801430
I(dist^2) -0.0001805469
вот так
calcVAL <-function(dist, mod) {
df <- data.frame(value = summary(mod)$coefficients[, 1])
df$var <- row.names(df)
row.names(df) <- NULL
print(df)
df[1,1] +
df[2, 1] * df[2, 2] +
df[3, 1] * df[3, 2]
}
calcVAL(10, mod)
дает ожидаемую ошибку
Ошибка в df [2, 1] * df [2, 2]: без нумерации c аргумент бинарного оператора