この既存の質問は、からの出力を後処理することによってラテックステーブルの行の色を変更する方法をカバーしていますが、 stats.stackexchangeで説明されているの引数を使用して、後処理の必要性を回避するprint.xtable()
ことで同じことを達成できると思います。Sweaveでうまくいく処理。その答えは、特定の1つの行の背景の色付けを扱っていますが、すべての奇数行の色付けに拡張できると思います。add.to.row
print.xtable()
私が遭遇している問題は、リストの長さを文字ベクトルの長さと等しくするadd.to.row
という引数に関係しています。のヘルプファイルには、次の説明があります。pos
command
print.xtable()
add.to.row:2つのコンポーネントのリスト。最初のコンポーネント(「pos」と呼ばれる必要があります)は、最後に追加のコマンドを追加する必要がある行の位置を含むリストです。2番目のコンポーネント(「command」と呼ばれる必要があります)は、同じ文字ベクトルです。指定された行の最後に追加する必要があるコマンドを含む最初のコンポーネントの長さ。デフォルト値は「NULL」です。つまり、コマンドを追加しません。
longtable環境を使用する場合、次のように、このadd.to.row
引数を使用して、すべてのページに印刷する必要があるテーブルの「ヘッダー」行を定義できます。
library(xtable)
my.df=data.frame(a=c(1:10),b=letters[1:10])
print(xtable(my.data.frame,caption="My Table"),
tabular.environment="longtable",
floating=FALSE,
hline.after=c(-1,nrow(my.data.frame)),
add.to.row=list(pos=list(0),command="\\hline \\endhead ")
この機能を維持し、他のすべての行がコマンドを取得する必要がある追加の機能を追加する必要があります\\rowcolor[gray]{0.8}
簡単そうに聞こえます。pos
のようなものである必要があり、のようなものlist=(0,1,3,5,7,9)
でcommand
ある必要がありますc("\\hline \\endhead ","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}","\\rowcolor[gray]{0.8}")
もちろん、いくつかの組み込み関数を利用して、奇数行のシーケンスとの繰り返しを構築したい"\\rowcolor[gray]{0.8}"
ので、次のことを考えました。
pos=list(0,seq(from=1,to=nrow(my.df),by=2))
と
command=c("\\hline \\endhead ",
rep("\\rowcolor[gray]{0.8}",length(seq(from=1,to=nrow(my.df),by=2))))
私の問題は、pos
上記のリストが次のように評価されることです。
> pos
[[1]]
[1] 0
[[2]]
[1] 1 3 5 7 9
これは長さが2です...この場合は長さが6である必要があります。