我对 R 中的 lm()
函数有疑问。
我知道 lm()
用于回归建模,我知道可以这样做:
lm(response ~ explanatory1 + explanatory2 + ... + explanatoryN, data = dataset)
现在我的问题是:“假设 N
很大,有没有我可以使用的捷径,它不需要我编写所有 N
变量名字?”
提前致谢!
编辑:我遗漏了我真正需要回答的问题的很大一部分。假设我想删除 1
到 k
解释变量,并且只包含这些变量的 n-k
。
最佳答案
以mtcars
为例:
我会捕获预测变量。我坚持一个基本示例,但可以将正则表达式与 grep
一起使用并保持相同的逻辑(见下文)。我正在使用除第一列(“mpg”)之外的所有列。
predictors <- names(mtcars)[-1]
# [1] "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"
myFormula <- paste("mpg ~ ", paste0(predictors, collapse = " + "))
# [1] "mpg ~ cyl + disp + hp + drat + wt + qsec + vs + am + gear + carb"
lm(data = mtcars, formula = myFormula)
正则表达式示例
假设 iris
为例。我想匹配所有包含“花瓣”的列名。
predictors <- grep(x = names(iris), pattern = "Petal", value = TRUE)
#[1] "Petal.Length" "Petal.Width"
myFormula <- paste("Sepal.Width ~ ", paste0(predictors, collapse = " + "))
# [1] "Sepal.Width ~ Petal.Length + Petal.Width"
lm(data = iris, formula = myFormula)
关于r - 在 R 的 lm() 中输入多个解释变量有捷径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49931029/