1. ホーム
  2. r

[解決済み] HTML、PDF、DOCXで見栄えのするシンプルな手動のRMarkdownテーブル

2022-03-12 22:50:47

質問

HTML(knitrとmarkdownパッケージ使用)、PDF(pandocとmiktex使用)、docx(pandoc使用)に変換する際に見栄えのするRMarkdownのテーブルを手動で簡単にフォーマットするにはどうすればよいでしょうか?

RMarkdownで、R関数の結果ではない小さな表を、私がよく使う3つのフォーマットで見栄えよく書けるようにしたいです。今のところ、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>

2つ これはニットHTMLの後では良い感じですが、PDFやdocxではイマイチです

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

3つ これはニットHTMLの後では見栄えが悪いが、PDFやdocxでは良い(今のところベストな選択肢です)

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

4つです。これは、ニット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"))

解決方法は?

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をupvoteして、解決に導いてくれた彼に感謝することにします。

テーブルにキャプションが必要な場合... の場合は、少し違った方法で行う必要があります。キャプションは、HTMLではなく、PDFでのみ表示されることに注意してください。

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