rのXtableの列ヘッダーに新しいラインを配置する方法
質問
私は私が入れているデータフレームを持っています スイブ 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 テーブルを手動で反復し、Newlineを含む手動でラテックスで書き留めるパッケージですが、これはちょっとしたFAFのようです!
解決
私がこれを行うことを発見した最良の方法は、テーブル列を「固定幅」列として示すことです。とともに 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
文字列の消毒を行い、aを使用してヘッダーを設定します \multicolumn
幅1のセル:
names(calqc_table)[1]<-"\\multicolumn{1}{>{\\centering}p{1.5in}}{Identifier of the Run within the Study}"
他のヒント
@sharpieのテクニックは、PDFへの変換でエラー43で失敗したため、私にとってはうまくいきませんでした。したがって、ここに私がしたことがあります:
動いた \\centering
マーカー:
names(calqc_table)=c(rep("\\multicolumn{1}{p{0.75in}}{\\centering Identifier of the Run within the Study}", 6))
(ここでは、テーブルの6列すべてに適用されます)
Xtable Printingでの無効化の消毒:
print(calqc_table, sanitize.colnames.function=function(x){x})