我正在使用 lavaan 包,我的目的是将我的模型残差作为数据框以供进一步使用。我运行了几个具有分组变量的模型。这是基本的工作流程:
require(lavaan)
df <- data.frame(
y1 = sample(1:100),
y2 = sample(1:100),
x1 = sample(1:100),
x2 = sample(1:100),
x3 = sample(1:100),
grpvar = sample(c("grp1","grp2"), 100, replace = T))
semModel <- list(length = 2)
semModel[1] <- 'y1 ~ c(a,b)*x1 + c(a,b)*x2'
semModel[2] <- 'y1 ~ c(a,b)*x1
y2 ~ c(a,b)*x2 + c(a,b)*x3'
funEstim <- function(model){
sem(model, data = df, group = "grpvar", estimator = "MLM")}
fits <- lapply(semModel, funEstim)
residuals <- lapply(fits, function(x) resid(x, "obs"))
现在产生的残差对象让我感到困惑。它是一个嵌套几次的矩阵列表。如何在没有任何硬编码的情况下将每个矩阵作为单独的数据帧?我不想将它们取消列出,因为那样会丢失一些信息。