использование texreg с Rmarkdown для получения текстовых документов

Когда я использовал Sweave, мне понравился texreg пакет для красивой печати результатов модели в латексе. Я перешел на RMarkdown, чтобы создать текстовый документ, и у меня возникли проблемы, так как я больше не могу перерабатывать старый texreg код.

Можно ли как-нибудь изменить этот фрагмент, чтобы в Word был красивый вывод на печать?

Примечание. upgradesngr.fx - это plm объект пакета.

{r summary,echo=FALSE,results='markup'} htmlreg(list(upgradesngr.fx), star.symbol = "\\*", center = TRUE, doctype = FALSE)


person Giorgio Spedicato    schedule 07.05.2016    source источник


Ответы (1)


В дальнейшем я предполагаю, что вы используете RStudio для создания документов Word. Я считаю, что это проблема, связанная с программным обеспечением. Вкратце: вы не можете встроить HTML-код при связывании документов Word.

Функция htmlreg в пакете texreg создает таблицы HTML (не таблицы Markdown). В надлежащий документ Markdown HTML может быть встроен, поскольку это часть спецификации Markdown. Например, вы можете просто написать следующий код в своем документе Markdown, и он будет переведен в таблицу с двумя столбцами:

<table>
<tr>
<td>upper left</td>
<td>upper right</td>
</tr>
<tr>
<td>lower left</td>
<td>lower right</td>
</tr>
</table>

Например, если вы используете функцию «Связать в HTML» в RStudio, или если вы используете любой другой редактор / просмотрщик Markdown, это даст следующий результат:

upper left upper right
lower left lower right

Если вы попробуете это в документе Markdown в RStudio и создадите из него HTML-документ, это сработает. Обратите внимание, что движок Pandoc, который используется под капотом в RStudio, не допускает никаких отступов.

Однако, если вы попытаетесь создать документ Word, документ не будет интерпретирован как (правильный) код Markdown (в том смысле, что встраивание HTML невозможно), т. Е. Вы получите все ячейки, перечисленные только по вертикали, но не отформатированные в виде таблицы. . Другими словами, использование функции «Связать в Word» не будет интерпретировать фрагменты HTML, встроенные в Markdown. Результат будет таким:

upper left
upper right
lower left
lower right

Вы можете попробовать это в своем собственном документе в RStudio.

Именно поэтому функция «Связать с Word» не встраивает таблицы, созданные htmlreg должным образом, в файл Word.

Вот решение, которое правильно работает с функцией «Связать в HTML», поскольку эта функция, кажется, правильно интерпретирует код HTML: Во-первых, давайте сделаем некоторые подготовительные шаги. Загрузите пакет texreg и оцените простую линейную модель в целях иллюстрации:

```{R echo = FALSE, include = FALSE}
library("texreg")
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)
```

Затем создайте таблицу HTML следующим образом:

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

Обратите внимание, что здесь необходимо results = "asis". Также обратите внимание, что функция htmlreg по умолчанию создает строку для типа документа, так как эту функцию также можно использовать для создания полных HTML-документов. Нам нужно выключить это, чтобы он заработал. В вашем примере вы правильно экранировали символы звездочки. Результатом будет правильная таблица регрессии, встроенная в документ HTML. Если вы теперь используете функцию «Связать в Word», она также будет включать содержимое таблицы, но, как и в приведенном выше примере HTML, она просто перечислит все ячейки таблицы в виде отдельных строк и не будет правильно отформатирована как таблица.

Также можно использовать функцию «Связать в PDF» в RStudio для создания PDF-документов с помощью LaTeX. В этом случае вам, очевидно, придется заменить HTML-таблицу таблицей LaTeX. Для этого используйте следующий код вместо приведенного выше:

```{r summary, echo = FALSE, results = "asis"}
texreg(lm.D9, star.symbol = "\\*", center = FALSE, caption = "")
```

Наконец, позвольте мне отметить, что вы можете создавать документы Word, используя обходной путь. Должна быть возможность создать HTML-документ, а затем открыть или импортировать его в MS Word. По крайней мере, можно сохранить вывод htmlreg в файл и открыть его в Word, поэтому я предполагаю, что то же самое должно выполняться для более длинного HTML-документа, созданного с помощью knitr.

person Philip Leifeld    schedule 08.05.2016