如何将lavaan包CFA分析的因子值添加至原始数据集?
如何将lavaan CFA的因子得分合并到原始数据集?
你遇到的问题核心在于:lavaan拟合出来的fit对象是S4类,不能像普通列表那样用$符号直接访问内部元素,这就是报错的原因。不过你其实已经离正确方法很近了,下面给你两种简单可行的解决思路:
方法一:用你已生成的data_factor直接合并
你已经通过data_factor <- predict(fit)得到了包含5个因子得分的数据框,只要把它和原始数据集直接合并即可:
基础R写法
data_CFA <- cbind(dataset, data_factor)
tidyverse写法(如果你习惯用dplyr)
library(dplyr) data_CFA <- dataset %>% bind_cols(data_factor)
因为predict(fit)生成的因子得分和原始数据集的行数完全匹配,所以不用担心合并时的行对齐问题。
方法二:直接用lavPredict获取得分并合并
如果你不想单独生成data_factor,也可以一步到位完成得分获取与合并:
# 用回归法计算并获取因子得分 factor_scores <- lavPredict(fit, type = "regression") # 合并到原始数据集 data_CFA <- cbind(dataset, factor_scores)
这里的lavPredict是lavaan官方推荐的获取因子得分的函数,比直接操作对象内部元素更安全可靠。
另外提一句,你之前写的factorERS那段代码其实是多余的,不需要单独提取原始条目就能完成因子得分的合并哦~
内容的提问来源于stack exchange,提问作者Lies Henderickx
相关产品推荐
相关产品推荐

