如何将存储为列表的自变量直接传入R语言glm函数完成建模
R中将变量名列表批量传入glm函数的解决方法
你需要先将存储自变量名的字符向量动态构建为公式对象,再传入glm即可,有两种常用实现方式:
方法1:手动拼接构造公式
# 给带空格的列名自动添加反引号,用+拼接所有自变量 predictor_part <- paste(paste0("`", columns, "`"), collapse = " + ") # 拼接完整公式并转换为公式类型 glm_formula <- as.formula(paste("`sitting position` ~", predictor_part)) # 运行模型,注意原写法中family拼写错误已修正 model <- glm(glm_formula, data = df, family = binomial())
方法2:用reformulate函数快速构造(更推荐)
R内置的reformulate函数可以直接通过字符向量生成公式,自动处理含特殊字符/空格的列名,无需手动加反引号:
glm_formula <- reformulate(termlabels = columns, response = "`sitting position`") model <- glm(glm_formula, data = df, family = binomial())
原错误写法的原因说明
你直接写~ columns时,glm会在输入的df数据框中查找名为columns的列作为自变量,而不会识别为全局环境中存储列名的字符向量,因此会报错。
内容的提问来源于stack exchange,提问作者Katharina
相关产品推荐
相关产品推荐

