R语言multicon::composite()数据含NA时所有行返回NA问题咨询
问题核心原因
1. 反向计分参数不完整
你指定了R=2要求对第2列做反向计分,但没有配套传入min和max参数定义量表的计分范围,函数无法执行反向计分计算,直接返回全量NA结果。BFI量表为1-7分制,反向计分逻辑为最小分值+最大分值-原始分,缺少范围参数时计算逻辑会直接中断。
2. 注意nomiss参数的定义差异
multicon::composite的nomiss参数定义为允许的最大缺失比例上限,和很多同类量表计分函数的参数逻辑相反:nomiss=0.8代表单行缺失值占比不超过80%即可参与计算,你的示例数据3列最多允许2个缺失,仅第一行有1个缺失,符合阈值要求,不是本次全NA的核心原因,后续调整列数时注意该差异即可。
修复后可正常运行的代码
library(multicon) BFI_1 <- c(NA,7,6,1,3,3) BFI_6 <- c(5,7,2,7,7,7) BFI_11 <- c(2,5,6,3,3,5) data <- cbind(BFI_1, BFI_6, BFI_11) # 方案1:不需要反向计分,移除R参数即可运行 multicon::composite(data, nomiss = .8) # 方案2:确实需要对第2列反向计分,补充计分范围参数 multicon::composite(data, R = 2, min = 1, max =7, nomiss = .8)
额外兼容建议
如果调整后仍有异常,可以尝试:
- 升级multicon包到最新正式版,旧版本存在矩阵输入的兼容bug
- 将输入数据转为data.frame格式,规避矩阵输入的兼容问题:
data <- data.frame(BFI_1, BFI_6, BFI_11)
内容的提问来源于stack exchange,提问作者AWorms
相关产品推荐
相关产品推荐

