r - 在 R 中使用变量获取 lmList()

标签 r linear-regression

我有作为 data.table 读入的数据。它看起来像这样:

d <- data.table(TYPE = c('A', 'A', 'A', 'B', 'B', 'C', 'C'),
                CLASS = c(1, 2, 3, 1, 4, 2, 1),
                NUM = c(48, 23, 32, 56, 75, 45, 76))

如果我运行 fits <- lmList(NUM ~ TYPE | CLASS, data = d)但是,如果我尝试将列名存储到变量中(以减少硬编码)并像这样运行它,它就会运行:

Y <- 'NUM'
X <- 'TYPE'
grp <- 'CLASS'
fits <- lmList(Y ~ X | grp, data = d)

我收到这个错误:

Warning messages:
1: In storage.mode(v) <- "double" : NAs introduced by coercion
2: In lmList(Y ~ X | grp, data = d) :
  Fitting failed for 1 group(s), probably because a factor only had one level:
  contrasts can be applied only to factors with 2 or more levels

我也试过fits <- lmList(as.name(Y) ~ as.name(X) | as.name(grp), data = d)我得到这个错误:

Error in model.frame.default(formula = as.name(Y) ~ as.name(X) + as.name(grp),  : 
  object is not a matrix

我尝试的其他方法是:

fits <- lmList(eval(paste(Y ~ X | grp, data = d)))

结果是:

Error in UseMethod("lmList") : 
  no applicable method for 'lmList' applied to an object of class "character"

我在这里做错了什么?欢迎任何帮助或建议。谢谢!

更新
这是一个linklmList供引用。

最佳答案

我知道这晚了,但我刚遇到这个问题。 我正在为 future 的搜索者回答这个问题。 您必须将公式视为 paste() 中的文本字符串。 尝试:

fits <- lmList(as.formula(paste(Y, " ~ ", X, " | grp")), data = d)

关于r - 在 R 中使用变量获取 lmList(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51445489/

相关文章:

r - 如何匹配字符串中的多个模式?

r - "}"和 "else"之间的换行真的很重要吗?

r - 如何从 R 中的线性模型获得 1000 个预测?

r - 数据框列表的不规则列表

r - 使用 data.table 对 r 中的序列求和

r - 如何计算矩阵第一行与 R 中其他行之间的余弦相似度?

python - 用于线性回归的 TensorFlow 导入数据

r - 使用 R 中的精确参数模拟来自回归模型的数据

python-3.x - 置信度分数太低

python - numpy.linalg.lstsq 和 sklearn.linear_model.LinearRegression 之间的区别