【问题标题】:String formula for linear models线性模型的字符串公式
【发布时间】:2021-06-18 05:42:41
【问题描述】:

我正在尝试使用在我的线性模型中重要的自变量创建一个字符串公式,尽管我发现很难在每个变量的末尾包含 +

我试过了:

as.formula(sprintf("encounter ~  %s",
                   names(tbest$model)[-1]))    

但是,这只给出了第一个变量:

encounter ~ open_shrubland

警告信息: 当 x 是长度 > 1 的字符向量时,不推荐使用公式 (x)。 请考虑使用公式(paste(x, collapse = " "))。

我如何将它们全部包含在内:encounter ~ X1 + X2 + X3 ...,此外,这是否可以使其具有功能性,这样如果我想删除一个变量,我只需要做my.formula[-3] 来删除它?

变量名列表:

c("open_shrubland", "Appalachian_Mountains", "Boreal_Hardwood_Transition", 
"Central_Hardwoods", "Piedmont", "wetland", "Badlands_And_Prairies", 
"Peninsular_Florida", "Central_Mixed_Grass_Prairie", "water", 
"New_England_Mid_Atlantic_Coast", "grassland", "mixed_forest", 
"cropland", "Oaks_And_Prairies", "Eastern_Tallgrass_Prairie", 
"evergreen_needleleaf", "year", "pland_change", "evergreen_broadleaf", 
"Southeastern_Coastal_Plain", "Prairie_Potholes", "Shortgrass_Prairie", 
"urban", "Prairie_Hardwood_Transition", "Lower_Great_Lakes_St.Lawrence_Plain", 
"mosaic", "Mississippi_Alluvial_Valley", "deciduous_broadleaf", 
"deciduous_needleleaf", "barren")

【问题讨论】:

    标签: r


    【解决方案1】:

    使用reformulate 会有所帮助。

    reformulate(names(tbest$model)[-1], 'encounter')
    

    如果变量名列表在x

    reformulate(x, 'encounter')
    
    encounter ~ open_shrubland + Appalachian_Mountains + Boreal_Hardwood_Transition + 
        Central_Hardwoods + Piedmont + wetland + Badlands_And_Prairies + 
        Peninsular_Florida + Central_Mixed_Grass_Prairie + water + 
        New_England_Mid_Atlantic_Coast + grassland + mixed_forest + 
        cropland + Oaks_And_Prairies + Eastern_Tallgrass_Prairie + 
        evergreen_needleleaf + year + pland_change + evergreen_broadleaf + 
        Southeastern_Coastal_Plain + Prairie_Potholes + Shortgrass_Prairie + 
        urban + Prairie_Hardwood_Transition + Lower_Great_Lakes_St.Lawrence_Plain + 
        mosaic + Mississippi_Alluvial_Valley + deciduous_broadleaf + 
        deciduous_needleleaf + barren
    

    【讨论】:

    • 效果很好!如果我想删除 x 变量,我将在 names(tbest$model)[-x] 中删除它们
    【解决方案2】:

    我们可以用paste创建一个公式

    as.formula(paste('encounter~', paste(names(tbtest$model)[-1], collapse = "+")))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2020-03-05
      相关资源
      最近更新 更多