首页 > 解决方案 > 具有动态因子的动态公式 - R

问题描述

我举这个例子(具有动态变量数的公式),并请您扩展问题

factors <- c("factor1", "factor2")
as.formula(paste("y~", paste(factors, collapse="+")))
# y ~ factor1 + factor2

我的问题很相似,但有很多不同的规格:

specification_vec <- c(0,1,2,3)

for (sp_vec in specification_vec){
specification_sel <- sp_vec


core_spec <- c("factor1core", "factor2core", "factor3core", "factor4core" ) # ->0
base1_spec <- c(core_spec, "factor5","factor6","factor7") #->1
base2_spec <- c(core_spec, "factor8","factor9","factor10") #->2
base3_spec <- c(base2_spec, "factor15") #->3

#tried solution Not Working    

if (specification_sel == 0){
Eqfor <- as.formula(paste("y~", paste(core_spec, collapse = "+")))
} else if (specification_sel == sp_vec) {
Eqfor <- as.formula(paste("y~", paste(paste0("base",sp_vec,"_vars"), collapse="+")))
}

#lot of other stuff

} #this closes the loop

任何想法?

编辑:感谢分贝评论。这应该有效。

  specification_vec <- c(0,1,2,3)

  for (sp_vec in specification_vec){
    specification_sel <- sp_vec


    core_spec <- c("factor1core", "factor2core", "factor3core", "factor4core" ) # ->0
    base1_spec <- c(core_spec, "factor5","factor6","factor7") #->1
    base2_spec <- c(core_spec, "factor8","factor9","factor10") #->2
    base3_spec <- c(base2_spec, "factor15") #->3

    #Working    

    if (specification_sel == 0){
      Eqfor <- as.formula(paste("y~", paste(core_spec, collapse = "+")))
    } else if (specification_sel == sp_vec) {
      Eqfor <- reformulate(eval(parse(text = paste0("base",sp_vec,"_spec"))), "y")

        }

    #lot of other stuff
   print(Eqfor) 
  } #this closes the loop

标签: rrstudioformula

解决方案


推荐阅读