Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 通过将表达式传递给“更新回归对象”;“子集”;_R_Expression_Substitution - Fatal编程技术网

R 通过将表达式传递给“更新回归对象”;“子集”;

R 通过将表达式传递给“更新回归对象”;“子集”;,r,expression,substitution,R,Expression,Substitution,我有许多由lm()创建的回归对象。每一个都是根据不同的数据构建的 帧,这些不同的数据帧具有不同的维度。但每个数据帧都包含逻辑变量x、y和z。在某些情况下,我希望更新每个回归对象,以便子集参数为x。在其他情况下,我希望更新每个回归对象,以便子集参数为y。在其他情况下,我想更新每个回归对象,使子集参数为z。做这件事的有效方法是什么 这是一种低效的方式: # Set only one of these three variables to be TRUE subsetX <- TRUE subs

我有许多由
lm()
创建的回归对象。每一个都是根据不同的数据构建的 帧,这些不同的数据帧具有不同的维度。但每个数据帧都包含逻辑变量
x
y
z
。在某些情况下,我希望更新每个回归对象,以便
子集
参数为
x
。在其他情况下,我希望更新每个回归对象,以便
子集
参数为
y
。在其他情况下,我想更新每个回归对象,使
子集
参数为
z
。做这件事的有效方法是什么

这是一种低效的方式:

# Set only one of these three variables to be TRUE
subsetX <- TRUE
subsetY <- FALSE
subsetZ <- FALSE

# Now update the regressions.
if (subsetX) {
  update(lm1, subset = x)
  update(lm2, subset = x)
  [...]
} else if (subsetY) {
  update(lm1, subset = y)
  update(lm2, subset = y)
  [...]
} else if (subsetZ) {
  update(lm1, subset = z)
  update(lm2, subset = z)
  [...]
}
#仅将这三个变量中的一个设置为TRUE

subsetX这里有一种方法,通过一个简单的函数,并使用
purr::map2
为其提供所需的模型和子集列表,使您的工作流程变得更简单

库(purrr)
设定种子(2020年)
mtcars$x(拦截)马力
#>    31.21178     -0.08098  
#> 
#> 
#> [[2]]
#> 
#>电话:
#>lm(公式=mpg~hp,数据=mtcars,子集=y)
#> 
#>系数:
#>(拦截)马力
#>    32.83501     -0.07294  
#> 
#> 
#> [[3]]
#> 
#>电话:
#>lm(公式=mpg~hp,数据=mtcars,子集=z)
#> 
#>系数:
#>(拦截)马力
#>    32.53554     -0.08688  
#> 
#> 
#> [[4]]
#>空的
subsetVar <- dplyr::case_when(
  subsetX ~ expression(x),
  subsetY ~ expression(y),
  subsetZ ~ expression(z))
update(lm1, subset = substitute(subsetVar))
update(lm2, subset = substitute(subsetVar))
[...]