web-dev-qa-db-ja.com

HTML、PDFおよびDOCXで見た目が簡単な手動のRMarkdownテーブル

HTML(knitrおよびmarkdownパッケージを使用)、PDF(pandocおよびmiktexを使用))およびdocx(pandocを使用)に変換したときに適切に表示されるRMarkdownのテーブルを手動で簡単にフォーマットする方法?

RMarkdownで、私が最も頻繁に使用する3つの形式で見栄えの良いR関数の結果ではない小さなテーブルを作成できるようにしたいと考えています。これまでのところ、3つのフォーマットのうち2つで見栄えの良いフォーマットを見つけましたが、3/3は可能ですか?

1。これは、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 |

三。これは、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"))
37
Ben

Daroczigのコメント、特にpanderがpandocのパイプ構文に変換される手がかりに触発されて、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')
```
33
Ben