This existing question涵蓋了一種方法來交替乳膠表中的行顏色後處理輸出從print.xtable()
,但我認爲這是可能的如stats.stackexchange所述,通過使用print.xtable()
的參數add.to.row
來實現相同的目的,避免了後處理的需要,這對於Sweave來說是很好的。該答案處理着色一個特定行的背景,但我認爲它可以擴展到着色所有奇數行。sweave,xtable,longtable和交替的行顏色...問題與'add.to.row`
我遇到的問題與add.to.row
參數有關,使得列表pos
的長度等於字符向量的長度command
。幫助文件print.xtable()
描述:
add.to.row:兩個組件的列表。第一個組件(它應該被稱爲'pos')是一個包含 行上位置的列表,它應該在最後添加額外的命令,第二個 組件(應該被稱爲'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}")
當然,我想利用一些內置的功能來構建奇數列序列和重複,所以我想的:
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。
'unlist()'也可以使列表變平。 – mac