R-仅适用于特定列

时间:2018-09-06 20:59:30

标签: r apply

我在R中使用的软件包适合特定形式的回归模型。但是,与允许x和y是独立对象的基本lm()函数不同,我正在使用的函数要求它们在同一数据帧中。

出现我的问题是因为我有很多要独立回归y的变量。因此,我有一个数据框,其中包含10个预测变量(x1,x2 ... x10)和一个标准变量(y),总共11列。我可以使用for循环来运行十个单独的回归,但是我想避免使用它,而是使用apply函数。但是,如果我在数据框上调用apply,则在最后一步中它将对y本身进行y回归,因此我想避免这种情况。是否有类似应用程序的功能可以运行并指定我只希望它运行10次而不是11次,或者是否有其他解决此问题的方法?

2 个答案:

答案 0 :(得分:2)

这是一个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 )

答案 1 :(得分:0)

使用具有列 ~# cgconfigparser -l /etc/cgconfig.conf ~# cgrulesengd cgroupsanscombex1x2x3的内置x4数据帧,y1y2,假设我们要分别对y3y4y1x1上的x2进行回归。

首先创建一个包含自变量x3名称的字符向量,并使用x4在其上运行指示的xnames。该函数将所需的公式粘贴在一起,并执行lapply返回一个run_lm类对象。结果lm是这些对象的列表,每个回归一个。

不使用任何软件包。

"lm"

或者,L的这个较短版本也可以与上面的xnames <- names(anscombe)[1:4] run_lm <- function(nm) lm(paste("y1 ~", nm), anscombe) L <- lapply(xnames, run_lm) 一起使用,但是run_lm的输出行并不那么好:

lapply