You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将psych包因子分析结果格式化为表格?fa2latex函数缺失问题

关于psych包变动与PCA结果导出的解决方案

一、psych包的函数变动

  • fa2latex确实在psych包的新版本中被移除,目前CRAN官方文档仅保留df2latex。若需生成因子分析的LaTeX代码,可通过df2latex配合提取因子分析关键数据实现,或借助xtable等第三方包辅助转换。

二、PCA结果导出的现成实现方案

无需自行编写代码的话,这些工具可直接满足需求:

  • psych包自带输出扩展:用print(pca1, cut=0.3, digits=3)可直接输出包含公因子方差、因子载荷的结果,再通过capture.output导出后整理格式。
  • papaja包:专为学术文档设计,支持将psych的PCA/因子分析结果转换为APA格式表格,可导出为LaTeX、Word等格式,自动包含项目名、公因子方差等统计量。
  • gt包:与flextable功能类似,语法更简洁,可直接提取PCA结果的载荷、公因子方差等数据,快速生成规范表格并导出。

三、改进你的现有代码(添加项目名前置、公因子方差)

针对你编写的psychSave函数,修改后实现所需功能:

library(psych)
library(flextable)

data("Thurstone")
pca1 <- principal(Thurstone, nfactors=2, rotate="varimax")

psychSave <- function(x, cut=0.3, format="html", path){
  # 提取载荷矩阵并排序
  loadings_df <- data.frame(fa.sort(x$loadings))
  # 应用载荷截断规则,保留3位小数
  loadings_df <- apply(loadings_df, 2, function(z) {
    ifelse(abs(z) < cut, NA, round(z, 3))
  }) %>% as.data.frame()
  # 前置项目名列
  loadings_df <- cbind(Name = rownames(loadings_df), loadings_df)
  # 添加公因子方差列
  loadings_df$Communality <- round(x$communality, 3)
  # 重置行名避免冗余
  rownames(loadings_df) <- NULL
  
  # 转换为flextable并设置表头标签
  ft <- flextable(loadings_df) %>%
    set_header_labels(Name = "项目", Communality = "公因子方差") %>%
    autofit()
  
  # 导出指定格式文件
  if(format == "html") {
    save_as_html(ft, path = path)
  } else if(format == "docx") {
    save_as_docx(ft, path = path)
  }
}

# 调用示例
psychSave(pca1, format="html", path="~/Desktop/test.html")

修改说明:

  • 通过cbind将项目名直接前置到数据框最左侧
  • 提取PCA结果中的$communality添加为独立列
  • 优化载荷值的小数位数显示
  • 自定义表头中文标签(可按需修改)

内容的提问来源于stack exchange,提问作者spindoctor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:05:29