我一直在尝试在 Rstudio 中编写一个函数,该函数为 EFA 提取越来越多的潜在因素,并在最终表格中报告每个解决方案的拟合度量。下面,我粘贴了我能想出的东西。
不幸的是,它有一些严重的限制:
for 循环需要设置要提取的因子的间隔。这很好,但如果函数在遇到错误消息时停止会更好(例如“最大迭代超出”、“在 GPFoblq 中未获得收敛”)。
[已解决] 决赛桌包含一个丑陋的第一列,标签为“RMSEA”,完全没用,但我无法摆脱它。
一般来说,for 循环可能不是达到目标的最优雅的方式。
library(psych) library(GPArotation) library(dplyr) library(plyr) library(knitr) efas <- list() for (i in 1:10) { fitn <- fa(bfi, nfactors = i, fm = "pa", rotate = "oblimin", scores = "regression") efas[[i]] <- data.frame(fitn$TLI, fitn$RMSEA[1], fitn$rms, fitn$BIC) %>% mutate(Factors = i) %>% dplyr::rename(TLI = fitn.TLI, RMSEA = fitn.RMSEA.1., SRMR = fitn.rms, BIC = fitn.BIC) %>% dplyr::select(Factors, TLI, RMSEA, SRMR, BIC) } d <- do.call("rbind", efas) %>% kable()%>% sub("^\\|[^|]+(\\|.*)", "\\1", .) d
谢谢你的帮助!