R语言:如何让反引号支持含空格的非标准变量名?
在R的lrm函数中使用含空格的变量名
问题场景
使用R语言rms包的lrm函数拟合逻辑回归时,遇到含空格的变量名(如Foot drop),即使使用反引号包裹,模型仍无法正常运行,但将变量名改为下划线分隔的Foot_drop时可以成功拟合。
可行解决方案
方法1:用I()函数包裹带反引号的变量
在公式中,将带空格的变量用I()包裹,同时保留反引号:
fit4 <- lrm(Recovered ~ I(`Foot drop`), data = data2, x = T, y = T) print(fit4)
方法2:使用reformulate构造公式
通过reformulate函数动态生成公式,避免直接在公式字符串中处理空格:
fit5 <- lrm(reformulate(response = "Recovered", termlabels = "`Foot drop`"), data = data2, x = T, y = T) print(fit5)
方法3:提前重命名变量(最稳妥)
如果允许修改数据集,直接将带空格的变量重命名为标准格式:
names(data2)[names(data2) == "Foot drop"] <- "Foot_drop" fit6 <- lrm(Recovered ~ Foot_drop, data = data2, x = T, y = T) print(fit6)
验证说明
以上三种方法都能成功拟合模型,其中方法1和2无需修改原始数据集,适合需要保留原始变量名的场景;方法3则彻底避免了非标准变量名的问题,后续分析更省心。
内容的提问来源于stack exchange,提问作者zhiwei li
相关产品推荐
相关产品推荐

