我在R中使用的软件包适合特定形式的回归模型。但是,与允许lm和y成为独立对象的基本lm()函数不同,我正在使用的函数要求它们在同一数据帧中。
出现我的问题是因为我有很多要独立回归y的变量。因此,我有一个数据帧,其中包含10个预测变量(x1,x2 ... x10)和一个标准变量(y),总共11列。我可以使用for循环来运行十个单独的回归,但是我想避免使用它,而是使用apply函数。但是,如果我在数据框上调用apply,则在最后一步中它将对y本身进行y回归,因此我想避免这种情况。是否有可以应用和运行的函数,可以指定我只希望运行10次而不是11次,或者是否有其他解决方法可以解决此问题?
这是一个tidyverse
解决方案:
library( tidyverse )
xx <- c("disp", "hp", "drat", "wt") # Names of predictor variables
y <- "mpg" # Name of response
str_c( y, xx, sep="~" ) %>%
map( as.formula ) %>% # Optional (see below)
map( lm, data = mtcars )
str_c
只需将公式建立为字符串即可(例如"mpg~disp"
)。虽然lm
直接接受字符串,但是您的特定回归模型可能不会。如果需要一个实际公式,则可以使用as.formula
(将建议转换为@ J.Doe!)将字符串转换为公式。除此之外,只需lm
用您的特定模型和mtcars
数据框替换即可。
这是使用base R而没有任何其他软件包的相同解决方案:
strs <- paste( y, xx, sep="~" )
strs <- lapply( strs, as.formula ) # Optional
lapply( strs, lm, data=mtcars )
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句