2013-06-09 2 views
2

Я создаю таблицы разметки с пакетом Pander R, у которого есть трубы в некоторых заголовках столбцов (например: P> | t |). Кажется (если я не пропустил что-то), что они неправильно обрабатываются ни pandoc, ни Rmarkdown из-за путаницы между разделителями столбцов и «истинными» трубами.таблицы pander mardown с внутренними внутренними трубами

Рассмотрим следующий RMD пример:

```{r message = FALSE} 
library(pander) 
panderOptions("table.style" , "rmarkdown") 
panderOptions("table.split.table" , Inf) # avoid to split the tables 

data(iris) 
mod <- lm(Sepal.Length ~ Species, data = iris) 
``` 

```{r results='asis'} 
pandoc.table(summary(mod)$coefficients[,-4]) 
``` 

```{r results='asis'} 
pandoc.table(summary(mod)$coefficients) 
``` 

В последней таблице генерируется Pander выглядит следующим образом (обратите внимание на трубы в последнем имени столбца):

|     &nbsp; | Estimate | Std. Error | t value | Pr(>|t|) | 
|------------------------:|:----------:|:------------:|:---------:|:----------:| 
|   **(Intercept)** | 5.006 | 0.0728 | 68.76 | 1.134e-113 | 
| **Speciesversicolor** | 0.93 | 0.103  | 9.033 | 8.77e-16 | 
| **Speciesvirginica** | 1.582 | 0.103  | 15.37 | 2.215e-32 | 

Если я вязать это HTML (через кнопку Rstudio, которая использует Rmarkdown для генерации HTML, если я не ошибаюсь), последняя таблица не отображается в виде таблицы, а как простой текст на выходе HTML.
Если я использую мкр порожденную knitr и превратить его в HTML с pandoc вывод представляет собой таблицу, но имя последнего столбца становится «Pr (>».

Отображается первая таблица без последнего столбца правильно.

+0

Это может быть хорошей идеей, чтобы спросить вокруг в списке рассылки или Pandoc [отслеживания ошибок] (https://github.com/jgm/pandoc/ проблемы), как избежать труб с помощью этого формата таблицы/синтаксиса. Возможным обходным решением для этого будет использование некоторых символов Unicode для «реальных труб». – daroczig

ответ

5

Вы можете избежать трубы с обратной косой черты (\|).

+0

OK спасибо, он действительно работает , @daroczig: как вы думаете, можно ли изменить пандер, чтобы справиться с этим? Я просто добавил: '' 'colnames (t) <- gsub (" \\ | "," \\\\ | ", colnames (t)); rownames (t) <- gsub ("\\ |", "\\\\ |", rownames (t)); t <- gsub ("\\ |", "\\\\ |", t) '' 'в вашей функции pandoc.table.return (после части, использующей функцию формата), и она сработала. Но, конечно, это требует большего тестирования. – Gilles

+0

@ Gilles - [недавняя фиксация] (https://github.com/Rapporter/pander/commit/f9405716281499ee5946b70c1014ba0638c3b685) должен автоматически избегать любых труб, найденных в таблице, но, пожалуйста, проверьте. Любое спасибо (+1), Джон, за быстрый и действительно полезный ответ! – daroczig

+0

Большое спасибо! Он отлично работает для pandoc. Но с knit2html и Rstudio таблицы по-прежнему отображаются неправильно, даже когда трубы экранированы (я также пытался с двойной обратной косой чертой). Может быть, проблема с пакетом R markdown? – Gilles

Смежные вопросы