使用BUGSnet包进行NMA随机效应建模时遇abs函数非数值参数错误
BUGSnet网状Meta分析随机效应模型错误排查方案
错误原因
Error in abs(c(deltas, deltas2)) : non-numeric argument to mathematical function 是因为nma.model.contrast调用的abs()函数接收到非数值参数,核心问题是数据中的lor(对数比值比)或se(标准误)列不是数值类型,或者包含非数值内容。
排查与修复步骤
检查数据类型
导入数据后,先查看关键列的类型:str(osdataset1)若
lor或se列显示为chr(字符型),则说明导入时未正确识别数值。修复数据类型
方式一:导入时强制指定列类型osdataset1 <- read_excel("C:/Users/Usuario/Desktop/doacnma.xlsx", na = "NA", col_types = c("text", "text", "numeric", "numeric")) # 根据实际列顺序调整,确保lor和se对应numeric方式二:导入后手动转换
osdataset1$lor <- as.numeric(osdataset1$lor) osdataset1$se <- as.numeric(osdataset1$se)转换后检查是否生成无效
NA(原数据含非数值字符时会出现):sum(is.na(osdataset1$lor)) sum(is.na(osdataset1$se))验证预处理结果
执行data.prep后,确认contrast_prep中的lor和se为数值型:str(contrast_prep)清理特殊格式问题
若数据中用逗号代替小数点,先替换再转换:osdataset1$lor <- gsub(",", ".", osdataset1$lor) osdataset1$se <- gsub(",", ".", osdataset1$se) osdataset1$lor <- as.numeric(osdataset1$lor) osdataset1$se <- as.numeric(osdataset1$se)核对处理组参考值
确保reference = "1"中的"1"是数据中存在的处理组名称,且无空格、大小写不一致等格式问题。
内容的提问来源于stack exchange,提问作者RENATO LUÍS PESSOA
相关产品推荐
相关产品推荐

