web-dev-qa-db-ja.com

knitrを使用してRマークダウンファイルのテーブルキャプションを使用してpandocで使用してpdfに変換する

.Rmdファイルでknitrを使用した図のキャプションのような表のキャプションを使用できるかどうか疑問に思っていますか?

図のキャプションのオプションは表示されましたが、表のキャプションのオプションは表示されませんでした。 "% latex table generated in R 2.15.2 by xtable 1.7-0 package % Wed Mar 06 15:02:11 2013"などのメッセージも削除したいと思います。

Xテーブルを使用してテーブルを作成しました。使用したサンプルコードは次のとおりです。

```{r table2, results='asis', message=FALSE} 
library(xtable) 
print(xtable(head(iris))) 
``` 

Pandocで処理した後に取得したテーブルは次のとおりです。

enter image description here

上記のメッセージを取り除くために、Rmdファイルでmessage = FALSEを使用しようとしました。 Rmdでテーブルのキャプションを自動的に追加できるかどうかも知りたいですか?

キャプションとは、以下のようなものを意味し(これは図用です)、図番号は自動的に更新されます。

この出力は、knitrによって作成されたマークダウンファイルを使用してpdfによって生成されたpdfからのスナップショットです。

enter image description here

ありがとうございました。

14
Jd Baba

LaTeX/HTMLのみのソリューションを他の点では素晴らしいxtableパッケージで使用することを主張しない場合は、Pandocのマークダウンで同じことを達成できる可能性があります。 1つのオプションは、テーブルの下に 手動でキャプション を追加するか、私の R Pandocライターパッケージ を使用することです。

> library(pander)                         # load pkg
> panderOptions('table.split.table', Inf) # not to split table
> set.caption('Hello Fisher!')            # add caption
> pander(head(iris))                      # show (almost) any R object in markdown
-------------------------------------------------------------------
 Sepal.Length   Sepal.Width   Petal.Length   Petal.Width   Species 
-------------- ------------- -------------- ------------- ---------
     5.1            3.5           1.4            0.2       setosa  

     4.9            3.0           1.4            0.2       setosa  

     4.7            3.2           1.3            0.2       setosa  

     4.6            3.1           1.5            0.2       setosa  

     5.0            3.6           1.4            0.2       setosa  

     5.4            3.9           1.7            0.4       setosa  
-------------------------------------------------------------------

Table: Hello Fisher!

次に、Pandocを使用して、このマークダウンファイルをHTML、LaTeX、docx、odt、またはその他の一般的なドキュメント形式に変換します。

11
daroczig

ストレートニットコードを使用してpandocで処理するために、マークダウンに自動的に番号が付けられたキャプションを持つテーブルを挿入できます。 .rmdファイルの先頭に次のコードスニペットを挿入します。

_```{r setup, echo=FALSE}
tn = local({
  i = 0
  function(x) {
    i <<- i + 1
    paste('\n\n:Table ', i, ': ', x, sep = '')
    # The : before Table tells pandoc to wrap your caption in <caption></caption>
  }
})
knit_hooks$set(tab.cap = function(before, options, envir) {
  if(!before)
    tn(options$tab.cap)
})
default_output_hook = knit_hooks$get("output")
knit_hooks$set(output = function(x, options) {
  if (is.null(options$tab.cap) == F)  
    x
  else
    default_output_hook(x,options)
})
```
_

番号付きの表のキャプションを挿入するには:

_```{r myirischunk, tab.cap="This is the head of the Iris table"}
kable(head(iris))
```
_

出力フックをオーバーライドしてtab.capを使用することにより、チャンクオプションをresults = 'asis'で乱雑にする必要はありません。

Knitrに感謝します!

PS:ラテックス/ pdfに変換したい場合は、おそらくラテックスにテーブルに番号を付けてもらいたいでしょう。その場合、tn(options$tab.cap)paste('\n\n:', options$tab.cap, sep='')に変更できますが、これはテストしていません。

9
DeanK

これはxtableで実現できます。 captionxtableに追加し、comment=FALSEprint関数に追加します。

print(
  xtable(
    head(iris),
    caption = 'Iris data'
  ),
  comment = FALSE,
  type = 'latex'
)

xtable および print.xtable のドキュメントを参照してください。

5
junkka