如何在R语言公式右侧调用拼接生成的变量名向量?
报错原因
你直接将变量名字符串rhs写入公式时,R不会自动解析字符串内的表达式逻辑,只会将rhs作为单个变量名去数据集mtcars中匹配,自然会出现变量不存在/长度不匹配的报错。
解决方法
方法1:将拼接好的完整公式字符串转为公式对象
先把响应变量和右侧拼接字符串组合成完整的公式字符串,再用as.formula()转为R可识别的公式对象即可:
rhs <- paste(c("disp", "hp"), collapse = " + ") # 拼接完整公式字符串后转成公式对象 my_formula <- as.formula(paste("mpg ~", rhs)) lm(data = mtcars, formula = my_formula)
方法2:使用reformulate()直接构造公式(更推荐)
R内置的reformulate()可以直接根据变量名向量生成公式,无需手动拼接加号,写法更简洁不易出错:
# 直接传入右侧变量向量,指定响应变量即可生成公式 my_formula <- reformulate(termlabels = c("disp", "hp"), response = "mpg") lm(data = mtcars, formula = my_formula)
内容的提问来源于stack exchange,提问作者nicholas
相关产品推荐
相关产品推荐

