19

xtable を使用してスウィーブドキュメントに入れるデータフレームがありますが、列名の 1 つが非常に長いため、スペースを節約するために 2 行に分割したいと考えています。

calqc_table<-structure(list(RUNID = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), ANALYTEINDEX = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L), ID = structure(1:11, .Label = c("Cal A", "Cal B", "Cal C", 
"Cal D", "Cal E", "Cal F", "Cal G", "Cal H", "Cal High", "Cal Low", 
"Cal Mid"), class = "factor"), mean_conc = c(200.619459644855, 
158.264703128903, 102.469121407733, 50.3551544728544, 9.88296440865076, 
4.41727762501703, 2.53494715706024, 1.00602831741361, 199.065054555735, 
2.48063347296935, 50.1499780776199), sd_conc = c(2.3275711264554, 
NA, NA, NA, NA, NA, NA, 0.101636943231162, 0, 0, 0), nrow = c(3, 
1, 1, 1, 1, 1, 1, 3, 2, 2, 2)), .Names = c("Identifier of the Run within the Study", "ANALYTEINDEX", 
"ID", "mean_conc", "sd_conc", "nrow"), row.names = c(NA, -11L
), class = "data.frame")
calqc_xtable<-xtable(calqc_table)

名前に改行を入れてみましたが、うまくいかなかったようです

names(calqc_table)[1]<-"Identifier of the \nRun within the Study"

これを行う方法はありますか?hmiscパッケージの latex 関数を使用してテーブルを手動で反復処理し、改行を含めて手動でラテックスに書き出すことを誰かが提案しているのを見たことがありますが、これはちょっとしたことのようです!

4

2 に答える 2

27

これを行うための最良の方法は、テーブルの列を「固定幅」の列として示し、その中のテキストが折り返されるようにすることです。パッケージを使用するxtableと、これは次の方法で実行できます。

align( calqc_xtable ) <- c( 'l', 'p{1.5in}', rep('c',5) )

xtableオプションの「rownames」列の配置を指定する必要があります。これは初期l仕様です。セクション仕様 はp{1.5in}、非常に長い最初の列ヘッダーに使用されます。これにより、幅が 1.5 インチのボックスに制限され、ヘッダーは必要に応じて複数の行に折り返されます。残りの 5 つの列は、c指定子を使用して中央揃えに設定されます。

のような固定幅の列の主な問題の 1 つp{1.5in}、両端揃えの配置を使用してテキストを設定することです。これにより、割り当てられた 1.5 インチ全体を行が埋めるように、各行の単語間の間隔が拡張されます。

率直に言って、ほとんどの場合、これは丁寧な言葉遣いでは説明できない結果をもたらします (私はアマチュアのタイポグラフィ マニアであり、この種の動作は顔のカチカチを引き起こします)。

>{}修正は、フィールドを列指定の先頭に追加することにより、ラテックス整列コマンドを提供することです。

align( calqc_xtable ) <- c( 'l', '>{\\centering}p{1.5in}', rep('c',4) )

その他の便利な配置コマンドは次のとおりです。

  • \raggedright -> テキストを左揃えにします
  • \raggedleft -> テキストを右揃えにします

R 文字列でバックスラッシュをエスケープするには、バックスラッシュを二重にすることを忘れないでください。デフォルトで使用する文字列サニテーション機能を無効にする必要がある場合もありxtableます。

ノート

テーブルの行がの代わりに で終わっていない限り、テーブルの最後の列でこの配置テクニックを使用すると失敗します。\tabularnewline\\xtable

考慮すべきもう 1 つの点は、列の行全体を 1.5 インチに折り返して中央に配置するのではなく、ヘッダーだけにすることです。その場合、xtable文字列のサニタイズを無効にし\multicolumn、幅 1 のセルを使用してヘッダーを設定します。

names(calqc_table)[1]<-"\\multicolumn{1}{>{\\centering}p{1.5in}}{Identifier of the Run within the Study}"
于 2010-04-21T23:02:25.403 に答える