R语言调用lme函数报错:无适用于character类对象的方法,求修复
报错修复:lme函数不接受字符型参数
报错信息
Error in UseMethod("lme") :
no applicable method for 'lme' applied to an object of class "character"
原代码
outcome = "Score" exposures_fixed = c("Age", "Sex","BMI") coefficients = c() for (k in 1:length(exposures_fixed)) { fix_exp = exposures_fixed [k] Formula = paste0(outcome,"~", fix_exp) mixed_model= lme(fixed = Formula, random = ~1|ID, data = DB, na.action = na.omit, method = "ML") coef = mixed_model$coefficients$fixed[2] coefficients = rbind(coefficients, coef) }
问题原因
你猜测的完全正确:lme()的fixed参数要求传入公式对象(formula),但当前代码里的Formula是拼接出来的字符串,类型不匹配导致报错。
修复方法
有两种简洁的修复方式:
方式1:用as.formula()转换字符串为公式
直接把拼接好的字符串通过as.formula()转换成公式对象即可:
outcome = "Score" exposures_fixed = c("Age", "Sex","BMI") coefficients = c() for (k in 1:length(exposures_fixed)) { fix_exp = exposures_fixed [k] # 转换为公式对象 Formula = as.formula(paste0(outcome,"~", fix_exp)) mixed_model= lme(fixed = Formula, random = ~1|ID, data = DB, na.action = na.omit, method = "ML") coef = mixed_model$coefficients$fixed[2] coefficients = rbind(coefficients, coef) }
方式2:用reformulate()直接构建公式
reformulate()是R里专门用来从字符向量构建公式的函数,更直观:
outcome = "Score" exposures_fixed = c("Age", "Sex","BMI") coefficients = c() for (k in 1:length(exposures_fixed)) { fix_exp = exposures_fixed [k] # 直接构建公式,response指定因变量,termlabels指定自变量 Formula = reformulate(termlabels = fix_exp, response = outcome) mixed_model= lme(fixed = Formula, random = ~1|ID, data = DB, na.action = na.omit, method = "ML") coef = mixed_model$coefficients$fixed[2] coefficients = rbind(coefficients, coef) }
额外优化建议
每次循环用rbind()拼接系数效率较低,建议预先初始化一个向量来存储结果:
outcome = "Score" exposures_fixed = c("Age", "Sex","BMI") # 预先初始化向量,长度等于自变量数量 coefficients = numeric(length(exposures_fixed)) for (k in seq_along(exposures_fixed)) { fix_exp = exposures_fixed [k] Formula = reformulate(fix_exp, outcome) mixed_model= lme(fixed = Formula, random = ~1|ID, data = DB, na.action = na.omit, method = "ML") # 直接赋值到对应位置 coefficients[k] = mixed_model$coefficients$fixed[2] }
内容的提问来源于stack exchange,提问作者Sari Katish
相关产品推荐
相关产品推荐

