R语言seminr包构建SEM测量模型出现参数缺失报错求解决方案
错误成因
报错的核心原因是constructs()函数的入参列表末尾存在多余逗号:你在定义最后一个composite("l11", multi_items("x", 87:89), weights = mode_A)的语句后额外加了逗号,R会将这个逗号识别为你需要传入下一个参数,但实际上没有对应的参数内容,因此触发「参数缺失且无默认值」的报错。
此外部分4.0版本以下的R本身不支持函数入参末尾的 trailing comma 语法,哪怕是基础函数传参时末尾加逗号也会触发同类报错。
解决方法
- 直接删除最后一个composite定义末尾的多余逗号即可,修正后的代码如下:
library(seminr) # Create measurement model mm_lock <- constructs( composite("l2", multi_items("x", 21:24), weights = mode_A), composite("l3", multi_items("x", 29:32), weights = mode_A), composite("l4", multi_items("x", 43:45), weights = mode_A), composite("l5", multi_items("x", 49:52), weights = mode_A), composite("l6", multi_items("x", 57:59), weights = mode_A), composite("l7", multi_items("x", 63:65), weights = mode_A), composite("l8", multi_items("x", 69:70), weights = mode_A), composite("l9", multi_items("x", 71:74), weights = mode_A), composite("l10", multi_items("x", 81:83), weights = mode_A), composite("l11", multi_items("x", 87:89), weights = mode_A) )
- 如果经常出现同类手误,可以升级到R 4.0及以上版本,该版本开始原生支持函数参数末尾的多余逗号语法,不会再触发此类报错。
内容的提问来源于stack exchange,提问作者Andrea Catacora
相关产品推荐
相关产品推荐

