我正在尝试根据我的数据中不同类别的子集创建一系列模型。我不是创建一堆单独的模型对象,而是lapply()
根据我的类别因子的每个级别的子集创建一个模型列表,如下所示:
test.data <- data.frame(y=rnorm(100), x1=rnorm(100), x2=rnorm(100), category=rep(c("A", "B"), 2))
run.individual.models <- function(x) {
lm(y ~ x1 + x2, data=test.data, subset=(category==x))
}
individual.models <- lapply(levels(test.data$category), FUN=run.individual.models)
individual.models
# [[1]]
# Call:
# lm(formula = y ~ x1 + x2, data = test.data, subset = (category ==
# x))
# Coefficients:
# (Intercept) x1 x2
# 0.10852 -0.09329 0.11365
# ....
这非常有效,除了模型调用显示subset = (category == x)
而不是category == "A"
等。这使得它更难以用于诊断目的(很难记住列表中的哪个模型对应于哪个类别)和类似的函数predict()
。
有没有办法将实际字符值替换x
到lm()
调用中,以便模型在调用中不使用原始值x
?