【问题标题】:Printing readable factor analysis output in Rmarkdown在 Rmarkdown 中打印可读的因子分析输出
【发布时间】:2019-06-07 14:42:59
【问题描述】:

我必须在 Rmarkdown 文档(最终可以是 pdf、word 或 html)中打印可读的因子分析输出,但我在执行此操作时遇到了麻烦。我有这个问题here。我正在运行 psych 版本 1.8.12。

可复现的代码如下,但我也在这里建立了一个 github 存储库:

注意,当我运行results='markup' 时,pdf 会编译,但表格不可读:它会打印乳胶代码。当我运行results='asis'时,返回错误! LaTeX Error: \caption outside float.

我对 kabel 和 texreg 等软件包不太熟悉。这些会是一个选择吗? `


title: "Factor Analysis Test"
author: "Simon Kiss"
date: '2019-06-07'
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r}
library(psych)
```

```{r}
data('Thurstone')
```
```{r}
mod<-fa(Thurstone, 3)
```
```{r results='markup'} 
fa2latex(mod)
````

【问题讨论】:

  • 你想打印什么样的表格?

标签: r r-markdown psych


【解决方案1】:

错误在 fa2latex 输出中。出于某种奇怪的原因,它将scriptsize 更改为s\iptsize。 以下更改修复了输出:

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r}
library(psych)
```


```{r}
data('Thurstone')
```
```{r}
mod<-fa(Thurstone, 3)
```
```{r, results='asis'} 
a <- fa2latex(mod, silent = T)
cat(gsub('s\\iptsize','scriptsize',a))
```

编辑

错误刚刚停止对我来说是可重现的,不知道发生了什么。 突然

```{r, results='asis'} 
a <- fa2latex(mod, silent = F)
```

确实按预期工作

【讨论】:

    【解决方案2】:

    如果要输出表格,请务必先将其转换为数据框。

    title: "Factor Analysis Test"
    author: "Simon Kiss"
    date: '2019-06-07'
    output: pdf_document
    ---
    
    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(echo = TRUE)
    ```
    
    ```{r}
    library(psych)
    ```
    
    ```{r}
    data('Thurstone')
    ```
    
    ```{r}
    mod<-fa(Thurstone, 3)
    ```
    ```{r results='markup'} 
    knitr::kable(data.frame(psych::fa.sort(mod$loadings)[1:8,]))
    

    【讨论】:

    • 好的,我能做到。但如果想办法在 markdown 文档中打印 fa2latex 代码,那就太好了。 fa2latex 有一些非常好的特性(例如,抑制因子负载低于某个值,将某些值加粗)确实有助于其可读性。
    【解决方案3】:

    在这种情况下,您需要将 fa2latex(mod) 的输出直接添加到文档中,而不是在 {r results='markup'} 中,然后生成一个 pdf,而不是 html 或 doc。将下面的代码复制并粘贴到 Rmd 文档中,看看会发生什么。

    ---
    output:
      pdf_document: default
      html_document: default
      word_document: default
    ---
    title: "Factor Analysis Test"
    author: "Simon Kiss"
    date: '2019-06-07'
    output: pdf_document
    ---
    
    ```{r setup, include=FALSE}
    knitr::opts_chunk$set(echo = TRUE)
    ```
    
    ```{r}
    library(psych)
    ```
    
    ```{r}
    data('Thurstone')
    ```
    
    ```{r}
    mod<-fa(Thurstone, 3)
    ```
    
    % Called in the psych package  fa2latex % Called in the psych package  mod 
    \begin{table}[htpb]\caption{fa2latex}
    \begin{center}
    \begin{scriptsize} 
    \begin{tabular} {l r r r r r r }
     \multicolumn{ 6 }{l}{ A factor analysis table from the psych package in R } \cr 
     \hline Variable  &   MR1  &  MR2  &  MR3  &  h2  &  u2  &  com \cr 
      \hline 
    Sentences   &  \bf{ 0.90}  &  -0.03  &   0.04  &  0.82  &  0.18  &  1.01 \cr 
     Vocabulary   &  \bf{ 0.89}  &   0.06  &  -0.03  &  0.84  &  0.16  &  1.01 \cr 
     Sent.Completion   &  \bf{ 0.84}  &   0.03  &   0.00  &  0.74  &  0.26  &  1.00 \cr 
     First.Letters   &   0.00  &  \bf{ 0.85}  &   0.00  &  0.73  &  0.27  &  1.00 \cr 
     Four.Letter.Words   &  -0.02  &  \bf{ 0.75}  &   0.10  &  0.63  &  0.37  &  1.04 \cr 
     Suffixes   &   0.18  &  \bf{ 0.63}  &  -0.08  &  0.50  &  0.50  &  1.20 \cr 
     Letter.Series   &   0.03  &  -0.01  &  \bf{ 0.84}  &  0.73  &  0.27  &  1.00 \cr 
     Pedigrees   &  \bf{ 0.38}  &  -0.05  &  \bf{ 0.46}  &  0.51  &  0.49  &  1.96 \cr 
     Letter.Group   &  -0.06  &   0.21  &  \bf{ 0.63}  &  0.52  &  0.48  &  1.25 \cr 
    \hline \cr SS loadings & 2.65 &  1.87 &  1.49 &  \cr  
    \cr 
                \hline \cr 
    MR1   & 1.00 & 0.59 & 0.53 \cr 
     MR2   & 0.59 & 1.00 & 0.52 \cr 
     MR3   & 0.53 & 0.52 & 1.00 \cr 
     \hline 
    \end{tabular}
    \end{scriptsize}
    \end{center}
    \label{default}
    \end{table} 
    

    【讨论】:

    • 如果这没有帮助,那就意味着我不明白这个问题!
    • 这样做的问题是它不能以理想的方式真正重现。最好只调用代码,而不是直接输入结果。
    • 我只是以这样的方式编写它,以便结果显示在控制台中。我还在上面提供了一个答案,似乎已经解决了这个问题?问题解决了吗?
    【解决方案4】:

    嗯,我猜这是一个迟到的答案,但是“baap”包可以解决你的问题。您可以在表达不需要的载荷时创建因子载荷表。这也适用于 Rmarkdown 格式。

    【讨论】:

      猜你喜欢
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 2013-05-31
      • 2020-10-24
      • 1970-01-01
      • 2012-06-08
      • 2022-01-09
      相关资源
      最近更新 更多