2016-03-25 5 views
5

長いテーブル名を持つpandoc.tableを作成していますので、テーブルがpdfページから外れません。私はあなたがsplit.tablesを使うことができることを知っていますが、それはテーブルの明快さを取り去ります。 split.cellsを使うことは、たとえベクトルとして提供されたとしても、何もしないようです。rマークダウンでpandocテーブルの列名をラップする

--- 
    output : pdf_document 
--- 

```{r,echo=FALSE, results="asis"} 
library(pander) 
mytab = data.frame(ReallySuperExtraLongColumnNameThatIWantToWrap=1:2, col2=2001:2002) 
pandoc.table(mytab) 
``` 

答えて

6

以下は、ヘッダ内の改行とテーブルを生成する。

```{r,echo=FALSE, results="asis"} 
library(pander) 
mytab = data.frame("ReallySuperExtraLongColumn\nNameThatIWantToWrap"=1:2, 
        col2=2001:2002, 
        check.names = FALSE) 
pandoc.table(mytab) 
``` 

改行を\nで符号化されます。これは列名に許可された文字ではなく、通常data.frame()関数はそれを削除します。 check.names = FALSEを使用すると、この動作を抑制し、入力したとおりに列名を正確に保持できます。また、あなたは別の行に列名を再定義することもできます

mytab = data.frame(ReallySuperExtraLongColumnNameThatIWantToWrap=1:2, col2=2001:2002) 
names(mytab)[1] = "ReallySuperExtraLongColumn\nNameThatIWantToWrap" 

はまたsplit.cellsでセルの幅を設定することができます。改行は自動的に生成されますが、改行は列ヘッダーにスペースがある場合にのみ表示されます。例:

```{r,echo=FALSE, results="asis"} 
library(pander) 
mytab = data.frame("Really Super Extra Long Column Name That I Want To Wrap"=1:2, 
        col2=2001:2002, 
        check.names = FALSE) 
pandoc.table(mytab, split.cells = 15) 
``` 

これは、「余分」と「名前」の後に改行を付けます。データフレーム名にはスペースも使用できないため、依然としてcheck.names = FALSEが必要です。

+0

ヒントをありがとう!私はパンドックテーブルの "スタイル"を変えると、実際に私がしたいことをやることに気付きました!私はstyle = 'rmarkdown'を使っていました。しかし、style = 'multiline'はそれを処理します! – Killian

+0

しかし 'style =" multiline "'がデフォルトですので、 'style'を指定しなければ、これが使われます。 'style =" rmarkdown "はセルの改行をサポートしていないと思われますが、' style = "multiline" 'を設定すると空白がないところで改行が追加されません。それはスペースで壊れ、 'split.cells = 30'をデフォルトで使用します。 – Stibu

+1

この回答は私には役に立たなかった。 'keep.line.breaks'という引数を使って' \ n'を尊重する必要がありました。 – jsta

関連する問題