текрег в Rmarkdown / knitr

Простой вопрос: могу ли я использовать texreg в документе markdown (не LaTex) в Rmarkdown, используя knitr?

Я думал, что смогу, но кажется я ошибаюсь? Я могу включить код LaTex в Rmarkdown для уравнений, но безуспешно для таблиц с texreg (по крайней мере, когда оставшийся документ написан в markdown.

Я получаю такую ​​ошибку:

pandoc document conversion failed with error 43

Независимо от того, использую ли я texreg() (для LatTex), htmlreg() или screenreg(), я не могу получить достойную таблицу в связанном PDF-документе.

---
title: "Title"
fontsize: 12pt
output:
   pdf_document:
   latex_engine: xelatex
---

Затем пытаемся разработать таблицу:

```{r Table_with_texreg, results="asis"}
library(texreg)
modellist = list(model1, model2, model3, model4, model5)

texreg(modellist, type = 'un', 
summaries = c('ChiSqM_Value', 'ChiSqM_DF', 'ChiSqM_DF', 'ChiSqM_PValue', 'CFI',
'RMSEA_Estimate'), single.row=TRUE)

(Некоторые из аргументов после texreg() - это команды для пакета MplusAutomation, определяющие, какие параметры (нестандартные) и какая модель соответствует индексам для использования. Не должны иметь никакого значения для вопроса / сообщения.)

Это код LaTex, сгенерированный при вязании, приводящий к ошибке покрытия 43:

\begin{tabular}{l c c c c c }
\hline
 & Model 1 & Model 2 & Model 3 & Model 4 & Model 5 \\
\hline
 DISCRIM$<$-AGEA           & $-0.00 \; (0.00)^{***}$ & $-0.01 \; (0.00)^{***}$ & $-0.01 \; (0.00)^{***}$ & $-0.00 \; (0.00)^{***}$ & $-0.01 \; (0.00)^{***}$ \\
 DISCRIM$<$-GNDR           & $0.05 \; (0.02)^{**}$   & $0.07 \; (0.02)^{***}$  & $0.09 \; (0.02)^{***}$  & $0.03 \; (0.02)^{*}$    & $0.07 \; (0.02)^{***}$  \\
 DISCRIM$<$-MINORITY       & $0.14 \; (0.04)^{***}$  & $0.17 \; (0.04)^{***}$  & $0.13 \; (0.04)^{***}$  & $0.19 \; (0.04)^{***}$  & $0.19 \; (0.04)^{***}$  \\
 PDJSEX\_R$<$-AGEA         & $-0.01 \; (0.00)^{***}$ &                         &                         & $-0.01 \; (0.00)^{***}$ &                         \\
 PDJSEX\_R$<$-GNDR         & $0.38 \; (0.03)^{***}$  &                         &                         & $0.38 \; (0.03)^{***}$  &                         \\
 PDJSEX\_R$<$-MINORITY     & $0.11 \; (0.04)^{**}$   &                         &                         & $0.11 \; (0.04)^{**}$   &                         \\
 PDJETN\_R$<$-AGEA         & $-0.00 \; (0.00)^{***}$ &                         & $-0.00 \; (0.00)^{***}$ &                         &                         \\
 PDJETN\_R$<$-GNDR         & $-0.02 \; (0.02)$       &                         & $-0.02 \; (0.02)$       &                         &                         \\
 PDJETN\_R$<$-MINORITY     & $0.94 \; (0.08)^{***}$  &                         & $0.93 \; (0.08)^{***}$  &                         &                         \\
 PREDJ\_R$<$-DISCRIM       & $1.00 \; (0.00)$        & $1.00 \; (0.00)$        & $1.00 \; (0.00)$        & $1.00 \; (0.00)$        & $1.00 \; (0.00)$        \\
 LKRSP\_R$<$-DISCRIM       & $1.05 \; (0.01)^{***}$  & $1.08 \; (0.01)^{***}$  & $1.08 \; (0.01)^{***}$  & $1.08 \; (0.01)^{***}$  &                         \\
 TRTBD\_R$<$-DISCRIM       & $1.02 \; (0.01)^{***}$  & $1.05 \; (0.01)^{***}$  & $1.05 \; (0.01)^{***}$  & $1.05 \; (0.01)^{***}$  &                         \\
 PDJSEX\_R$<$-$>$DISCRIM   & $0.74 \; (0.02)^{***}$  &                         &                         & $0.76 \; (0.02)^{***}$  &                         \\
 PDJETN\_R$<$-$>$DISCRIM   & $0.62 \; (0.02)^{***}$  &                         & $0.66 \; (0.02)^{***}$  &                         &                         \\
 PDJETN\_R$<$-$>$PDJSEX\_R & $0.78 \; (0.02)^{***}$  &                         &                         &                         &                         \\
 PREDJ_R$1<-Thresholds     & $0.19 \; (0.10)^{*}$    & $0.19 \; (0.10)^{*}$    & $0.18 \; (0.10)$        & $0.18 \; (0.10)$        & $0.18 \; (0.10)$        \\
 PREDJ_R$2<-Thresholds     & $0.71 \; (0.09)^{***}$  & $0.71 \; (0.09)^{***}$  & $0.70 \; (0.09)^{***}$  & $0.70 \; (0.09)^{***}$  & $0.70 \; (0.09)^{***}$  \\
 LKRSP_R$1<-Thresholds     & $0.14 \; (0.07)$        & $0.13 \; (0.07)$        & $0.15 \; (0.07)^{*}$    & $0.14 \; (0.07)$        & $0.14 \; (0.07)$        \\
 LKRSP_R$2<-Thresholds     & $0.72 \; (0.07)^{***}$  & $0.72 \; (0.07)^{***}$  & $0.73 \; (0.07)^{***}$  & $0.72 \; (0.07)^{***}$  & $0.72 \; (0.07)^{***}$  \\
 TRTBD_R$1<-Thresholds     & $0.51 \; (0.06)^{***}$  & $0.51 \; (0.06)^{***}$  & $0.50 \; (0.06)^{***}$  & $0.51 \; (0.06)^{***}$  & $0.50 \; (0.06)^{***}$  \\
 TRTBD_R$2<-Thresholds     & $1.11 \; (0.07)^{***}$  & $1.11 \; (0.07)^{***}$  & $1.12 \; (0.07)^{***}$  & $1.11 \; (0.07)^{***}$  & $1.11 \; (0.07)^{***}$  \\
 PDJSEX_R$1<-Thresholds    & $0.86 \; (0.06)^{***}$  & $0.86 \; (0.06)^{***}$  & $0.87 \; (0.06)^{***}$  & $0.86 \; (0.06)^{***}$  & $0.86 \; (0.06)^{***}$  \\
 PDJSEX_R$2<-Thresholds    & $1.44 \; (0.06)^{***}$  & $1.44 \; (0.06)^{***}$  & $1.44 \; (0.06)^{***}$  & $1.44 \; (0.06)^{***}$  & $1.44 \; (0.06)^{***}$  \\
 PDJETN_R$1<-Thresholds    & $0.80 \; (0.07)^{***}$  & $0.79 \; (0.07)^{***}$  & $0.80 \; (0.07)^{***}$  & $0.79 \; (0.07)^{***}$  & $0.80 \; (0.07)^{***}$  \\
 PDJETN_R$2<-Thresholds    & $1.29 \; (0.09)^{***}$  & $1.29 \; (0.09)^{***}$  & $1.29 \; (0.09)^{***}$  & $1.29 \; (0.09)^{***}$  & $1.29 \; (0.09)^{***}$  \\
 DISCRIM$<$-$>$DISCRIM     & $0.79 \; (0.02)^{***}$  & $0.74 \; (0.02)^{***}$  & $0.74 \; (0.02)^{***}$  & $0.75 \; (0.02)^{***}$  & $0.84 \; (0.01)^{***}$  \\
 PDJSEX\_R$<$-DISCRIM      &                         & $1.03 \; (0.01)^{***}$  & $1.03 \; (0.01)^{***}$  &                         & $0.98 \; (0.01)^{***}$  \\
 PDJETN\_R$<$-DISCRIM      &                         & $0.90 \; (0.01)^{***}$  &                         & $0.90 \; (0.01)^{***}$  & $0.87 \; (0.01)^{***}$  \\
 LKRSP\_R$<$-AGEA          &                         &                         &                         &                         & $-0.01 \; (0.00)^{***}$ \\
 LKRSP\_R$<$-GNDR          &                         &                         &                         &                         & $0.06 \; (0.02)^{***}$  \\
 LKRSP\_R$<$-MINORITY      &                         &                         &                         &                         & $0.14 \; (0.04)^{***}$  \\
 TRTBD\_R$<$-AGEA          &                         &                         &                         &                         & $-0.00 \; (0.00)^{**}$  \\
 TRTBD\_R$<$-GNDR          &                         &                         &                         &                         & $0.06 \; (0.02)^{**}$   \\
 TRTBD\_R$<$-MINORITY      &                         &                         &                         &                         & $0.20 \; (0.05)^{***}$  \\
 LKRSP\_R$<$-$>$DISCRIM    &                         &                         &                         &                         & $0.74 \; (0.02)^{***}$  \\
 TRTBD\_R$<$-$>$DISCRIM    &                         &                         &                         &                         & $0.72 \; (0.02)^{***}$  \\
 TRTBD\_R$<$-$>$LKRSP\_R   &                         &                         &                         &                         & $0.88 \; (0.01)^{***}$  \\
\hline
ChiSqM_Value               & 331.41                  & 808.73                  & 776.77                  & 568.88                  & 648.83                  \\
ChiSqM_DF                  & 10                      & 17                      & 14                      & 14                      & 10                      \\
ChiSqM_PValue              & 0.00                    & 0.00                    & 0.00                    & 0.00                    & 0.00                    \\
CFI                        & 0.97                    & 0.93                    & 0.94                    & 0.95                    & 0.95                    \\
RMSEA_Estimate             & 0.02                    & 0.03                    & 0.03                    & 0.03                    & 0.03                    \\
\hline
\multicolumn{6}{l}{\scriptsize{$^{***}p<0.001$, $^{**}p<0.01$, $^*p<0.05$}}
\end{tabular}

P.S. Вязание в HTML (не PDF) и использование htmlreg (не texreg), похоже, работает нормально. Однако я бы предпочел использовать PDF.


person cibr    schedule 12.02.2017    source источник


Ответы (1)


Вы пишете, что хотите создать PDF-файл, но не используете LaTeX. вы уверены в этом? Я не знаю, как это сделать, но вот два решения для создания а) вывода HTML и б) PDF-файлов с LaTeX, оба с использованием texreg:

Решение 1 (для вывода HTML):

---
output: html_document
---

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

```{r, echo = FALSE, message = FALSE}
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)

library("texreg")
```

Some equation:
$$a + b = 2$$

Table follows:
```{r, results = 'asis', echo = FALSE}
htmlreg(lm.D9, star.symbol = "\\*", doctype = FALSE, center = FALSE, caption = "")
```

Вот результат:

Вывод HTML

Решение 2 (для вывода в PDF):

---
output: pdf_document
---

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

```{r, echo = FALSE, message = FALSE}
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)

library("texreg")
```

Some equation:
$$a + b = 2$$

Table follows:
```{r, results = 'asis', echo = FALSE}
texreg(lm.D9, table = FALSE, use.packages = FALSE)
```

Вот результат:

Вывод в PDF

person Philip Leifeld    schedule 12.02.2017
comment
Спасибо за комментарий и спасибо за разработку отличного пакета! Может мне стоит использовать LaTex. После того, как я только что изучил основы R, я обнаружил, что изучение LaTex - довольно сложная кривая обучения. (Создание PDF не проблема в Rmarkdown, если я не добавлю таблицу.) Спасибо за код! - person cibr; 12.02.2017
comment
Конечно! Рад, что ты нашел это полезным! Однако, честно говоря, я не понимаю, почему вы думаете, что второе решение требует более крутого обучения. Вы все еще пишете код Markdown, он просто конвертируется в LaTeX внутренне, потому что вы хотите сгенерировать PDF. Как видите, код обоих решений очень похож. - person Philip Leifeld; 13.02.2017
comment
Спасибо, ваш код работает нормально при вязании в PDF, но не мой ... Я добавил код LaTex, сгенерированный texreg, этот код приводит к ошибке преобразования. - person cibr; 13.02.2017
comment
Спасибо за более подробный пример в обновленном вопросе. Вам нужно использовать двойное подчеркивание и тому подобное. Например, вместо \_ в названиях коэффициентов следует писать \\_. Для этого вы можете использовать аргумент custom.coef.names, если вы не хотите изменять имена коэффициентов внутри вашей модели. Не знаю, единственная ли это проблема, но это определенно препятствие. Если вам нужна дополнительная помощь, вы должны предоставить минимальный автономный пример, который воспроизводит вашу таблицу с нуля. - person Philip Leifeld; 14.02.2017
comment
Думаю, в названиях коэффициентов больше проблем. Например, в PREDJ_R$1<-Thresholds есть и неэкранированное подчеркивание, и один $, который обычно сообщает LaTeX, что ему следует ожидать выполнения некоторой математики, но вы не закрываете встроенный математический блок. - person Philip Leifeld; 14.02.2017
comment
Спасибо за вашу помощь и терпение! Рассматриваемый код генерируется автоматически пакетом MplusAutomation, я проинформировал разработчиков о вашем комментарии. - person cibr; 14.02.2017