在 R 的 lm() 中输入多个解释变量有捷径吗?
Is there a short cut to typing multiple explanatory variables in lm() in R?
我对 R 中的 lm()
函数有疑问。
我知道 lm()
用于回归建模,我知道可以这样做:
lm(response ~ explanatory1 + explanatory2 + ... + explanatoryN, data = dataset)
现在我的问题是:"Suppose that N
is large, is there a short cut that I can use that doesn't involve me having to write all N
variable names?"
提前致谢!
编辑:我遗漏了我真正需要回答的问题的很大一部分。假设我想删除 1
到 k
解释变量,并且只包括 n-k
这些变量。
您可以使用 .
lm(response~., data = data)
您可以对 select 所有变量使用点号,对 select 不应用作预测变量的变量使用减号。
lm(Sepal.Length ~ .-Species -Petal.Length, iris)
Call:
lm(formula = Sepal.Length ~ . - Species - Petal.Length, data = iris)
Coefficients:
(Intercept) Sepal.Width Petal.Width
3.4573 0.3991 0.9721
你可以只用一个点lm(response ~ ., data= dataset)
使用 mtcars 数据集的示例(已在 R 中)
ex = lm(mpg~., data = mtcars)
summary (ex)
以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
为例。我想匹配所有包含 "Petal" 的列名。
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 中的 lm()
函数有疑问。
我知道 lm()
用于回归建模,我知道可以这样做:
lm(response ~ explanatory1 + explanatory2 + ... + explanatoryN, data = dataset)
现在我的问题是:"Suppose that N
is large, is there a short cut that I can use that doesn't involve me having to write all N
variable names?"
提前致谢!
编辑:我遗漏了我真正需要回答的问题的很大一部分。假设我想删除 1
到 k
解释变量,并且只包括 n-k
这些变量。
您可以使用 .
lm(response~., data = data)
您可以对 select 所有变量使用点号,对 select 不应用作预测变量的变量使用减号。
lm(Sepal.Length ~ .-Species -Petal.Length, iris)
Call:
lm(formula = Sepal.Length ~ . - Species - Petal.Length, data = iris)
Coefficients:
(Intercept) Sepal.Width Petal.Width
3.4573 0.3991 0.9721
你可以只用一个点lm(response ~ ., data= dataset)
使用 mtcars 数据集的示例(已在 R 中)
ex = lm(mpg~., data = mtcars)
summary (ex)
以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
为例。我想匹配所有包含 "Petal" 的列名。
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)