У меня есть функция для создания объекта lm для нескольких итераций модели, а веса являются входными данными для функции, которые принимают разные значения столбцов.
Вот манекен:
x <-c(rnorm(10),NA)
df <- data.frame(y=1+2*x+rnorm(11)/2, x=x, wght1=1:11)
## Fancy weights as numeric vector
df$weight <- (df$wght1)^(3/4)
weight_var <- "weight"
model <- lm(y~x,data=df,weights=df[, weight_var])
model$call[[4]]
Видите, model$call[[4]]
возвращает df[, weight_var]
, я бы хотел, чтобы вместо него возвращался столбец weight
; которая является ссылкой на эту переменную
Скажем, у меня в данных есть столбцы a, b, c, d, e, я хочу запустить модель и проверить, есть ли весовые коэффициенты d или e.
Таким образом, я определяю оператор if следующим образом:
if (weight_var[[1]]=='') {
model <- lm(formula = eqmodel, xdata)
} else {
model <- lm(formula = eqmodel, xdata, weights = xdata[,weight_var])
}
, где weight_var
может быть d
или e
. Так что когда мы звоним:
model$call[[4]]
вывод: d
или e
.
Однако, когда я вижу модель как:
Call:
lm(formula = eqmodel, data = xdata, weights = xdata[, weight_var])
Я согласен с eqmodel, являющимся уравнением модели, заданной извне функции. Тем не менее, я хотел бы, чтобы веса были d или e, как это было принято. Есть ли способ сделать это?