0

我一直在尝试在 Rstudio 中编写一个函数,该函数为 EFA 提取越来越多的潜在因素,并在最终表格中报告每个解决方案的拟合度量。下面,我粘贴了我能想出的东西。

不幸的是,它有一些严重的限制:

  1. for 循环需要设置要提取的因子的间隔。这很好,但如果函数在遇到错误消息时停止会更好(例如“最大迭代超出”、“在 GPFoblq 中未获得收敛”)。

  2. [已解决] 决赛桌包含一个丑陋的第一列,标签为“RMSEA”,完全没用,但我无法摆脱它。

  3. 一般来说,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
    

谢谢你的帮助!

4

0 回答 0