Eenvoudige handmatige RMarkdown-tabellen die er goed uitzien in HTML, PDF en DOCX

Hoe kan ik handmatig en eenvoudig een tabel in RMarkdown opmaken die er goed uitziet wanneer deze er goed uitziet wanneer deze wordt geconverteerd naar HTML (met behulp van de knitr- en markdown-pakketten), PDF (met behulp van pandoc en miktex) en docx (met behulp van pandoc)?

Ik wil in RMarkdown kleine tabellen kunnen schrijven die niet het resultaat zijn van R-functies die er goed uitzien in de drie formaten die ik het meest gebruik. Tot nu toe heb ik een formaat gevonden dat er goed uitziet in 2 van de 3 formaten, is 3/3 mogelijk?

Een. Dit ziet er goed uit na Knit HTML, maar niet goed in de PDF of docx

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

Twee. Deze ziet er goed uit na Knit HTML, maar niet goed in de PDF of docx

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

Drie. Deze ziet er niet goed uit na Knit HTML, maar is goed in de PDF en docx (beste optie tot nu toe)

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

Vier. Dit ziet er goed uit na Knit HTML en maak PDF en docx (winnaar!) maar is niet de handmatige opmaak die ik zoek.

```{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')
```

Zo maak ik de PDF- en docx-bestanden:

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"))

Antwoord 1, autoriteit 100%

Geïnspireerd door de opmerkingen van daroczig, met name de aanwijzing dat pandervertaalt naar de pijpsyntaxis van pandoc, heb ik de pander-documentatie nader bekeken en een verwijzing gevonden naar cat. Na wat experimenteren heb ik de winnaar gevonden:

```{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
```

Dit levert in mijn tests uniforme, goed uitziende tabellen op in HTML, PDF en docx. Nu ga ik daroczig op een aantal andere vragen stemmen om hem te bedanken dat hij me naar de oplossing heeft gebracht.

Als je een onderschrift voor je tabel nodig hebt…dan moet je het iets anders doen. Merk op dat het bijschrift alleen zichtbaar is in de PDF, niet in de 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')
```

Other episodes