Подтвердить что ты не робот

Простые ручные таблицы RMarkdown, которые хорошо смотрятся в HTML, PDF и DOCX

Как я могу вручную и просто форматировать таблицу в RMarkdown, которая будет хорошо выглядеть при преобразовании в HTML (с использованием пакетов knitr и markdown), PDF (с использованием pandoc и miktex) и docx (с использованием pandoc)?

Я хочу, чтобы писать небольшие таблицы в RMarkdown, которые не являются результатом функций R, которые хорошо смотрятся в трех форматах, которые я использую чаще всего. До сих пор я нашел формат, который хорошо выглядит в двух из трех форматов, возможно 3/3?

Один. Это выглядит хорошо после Knit HTML, но не очень хорошо в PDF или docx

<table>
<tr>
<td>Eggs</td>
<td>Ham</td>
</tr>
<tr>
<td>Basil</td>
<td>Tomato</td>
</tr>
</table>

Два. Этот выглядит хорошо после вязания HTML, но не хорошего в PDF или docx

| Tables        | Are           | Cool  |
| ------------- |:-------------:| -----:|
| col 3 is      | right-aligned | $1600 |
| col 2 is      | centered      |   $12 |
| zebra stripes | are neat      |    $1 |

Три. Это не выглядит хорошо после Knit HTML, но хорошо в PDF и docx (лучший вариант до сих пор)

V1         Tweedledee       Tweedledum
--------   --------------   ----------------
Age        14               14
Height     3'2"             3'2"
Politics   Conservative     Conservative
Religion   "New Age"        Syrian Orthodox
---------  --------------   ----------------

Четыре. Это выглядит хорошо после вязания HTML и создания PDF и docx (победитель!), Но это не форматирование вручную.

```{r table1, echo=FALSE, message=FALSE, warnings=FALSE, results='asis'}
require(pander)
panderOptions('table.split.table', Inf)
set.caption("Data on cars")
pander(mtcars, style = 'rmarkdown')
```

Вот как я делаю файлы PDF и docx:

filen <- "table" # name of my RMarkdown file without suffix
knit(paste0(filen,".Rmd"))

# make PDF
system(paste0("pandoc -s ", paste0(filen,".md"), " -t latex -o ", paste0(filen,".pdf"), " --highlight-style=tango  -S"))

# make docx
system(paste0("pandoc -s ", paste0(filen,".md"), " -o ", paste0(filen,".docx"), " --highlight-style=tango  -S"))
4b9b3361

Ответ 1

Вдохновленный комментариями daroczig, особенно ключ, который pander переводит на синтаксис pandoc pipe, я более подробно рассмотрел документацию pander и нашел ссылку на cat. После некоторых экспериментов я нашел победителя:

```{r table2, echo=FALSE, message=FALSE, warnings=FALSE, results='asis'}
tabl <- "  # simple table creation here
| Tables        | Are           | Cool  |
|---------------|:-------------:|------:|
| col 3 is      | right-aligned | $1600 |
| col 2 is      | centered      |   $12 |
| zebra stripes | are neat      |    $1 |
"
cat(tabl) # output the table in a format good for HTML/PDF/docx conversion
```

Это дает одинаково хорошо выглядящие таблицы в HTML, PDF и docx в моих тестах. Теперь я ухожу, чтобы поддержать daroczig по некоторым другим вопросам, чтобы поблагодарить его за то, что он привлек меня к решению.

Если вам нужна подпись для вашей таблицы..., вам нужно будет сделать это несколько иначе. Обратите внимание, что подпись будет видна только в формате PDF, а не в HTML:

```{r table-simple, echo=FALSE, message=FALSE, warnings=FALSE, results='asis'}
require(pander)
panderOptions('table.split.table', Inf)
set.caption("My great data")
my.data <- " # replace the text below with your table data
  Tables        | Are           | Cool
  col 3 is      | right-aligned | $1600 
  col 2 is      | centered      |   $12 
  zebra stripes | are neat      |    $1"
df <- read.delim(textConnection(my.data),header=FALSE,sep="|",strip.white=TRUE,stringsAsFactors=FALSE)
names(df) <- unname(as.list(df[1,])) # put headers on
df <- df[-1,] # remove first row
row.names(df)<-NULL
pander(df, style = 'rmarkdown')
```