gpt4 book ai didi

r - Knitr xtable 行颜色导致行标题单元格中的第二个表变黑

转载 作者:行者123 更新时间:2023-12-04 02:07:42 25 4
gpt4 key购买 nike

亲爱的 R xtable 和 knitr 用户:我一直在努力解决这个问题好几天了,我很惊讶没有人报告过类似的案例。非常感谢您的洞察力和帮助。

我用 xtable 制作了两张或更多张 table 。表中的行交替着色。第一张 table 很好。但是从第二个表格(或更多)开始,最左边的标题单元格总是被涂黑。

不幸的是,这是非常可重复的。在第一张漂亮的 table 之后,我总是得到完全相同的涂黑标题。这是重现它的代码:

\documentclass{article}
\usepackage{booktabs}
\usepackage{colortbl, xcolor}

\begin{document}
<<echo=TRUE,results='asis'>>=
employee <- c('John Doe','Peter Gynn','Jolie Hope')
salary <- c(21000, 23400, 26800)

mydata <- data.frame(employee, salary)
rws <- seq(1, (nrow(mydata)), by = 2)
col <- rep("\\rowcolor[gray]{0.90}", length(rws))
library(xtable)
print(xtable(mydata, caption="Test"), booktabs = TRUE,
include.rownames = FALSE, caption.placement = "top",
sanitize.colnames.function = identity,
add.to.row = list(pos = as.list(rws), command=col))

print(xtable(mydata, caption="Test"), booktabs = TRUE,
include.rownames = FALSE, caption.placement = "top",
sanitize.colnames.function = identity,
add.to.row = list(pos = as.list(rws), command=col))
@

\end{document}

输出:

xtable output

我的 sessionInfo() 如下:
> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: i386-w64-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252 LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C LC_TIME=English_United States.1252

attached base packages:
[1] stats graphics grDevices utils datasets methods base

loaded via a namespace (and not attached):
[1] digest_0.6.3 evaluate_0.4.7 formatR_0.9 knitr_1.4.1 stringr_0.6.2 tools_3.0.1

最佳答案

很容易修复:只需更改 nrow(mydata)nrow(mydata) - 1 ,您将不会再看到黑色单元格。

这里的潜在问题非常微妙:您有 3 行,而 seq(1, nrow(mydata), by = 2)给你c(1, 3) ,那么你是在告诉 xtable添加 \rowcolor[gray]{0.90}在第一行和第三行之后,生成下表:

\begin{tabular}{lr}
\toprule
employee & salary \\
\midrule
John Doe & 21000.00 \\
\rowcolor[gray]{0.90}Peter Gynn & 23400.00 \\
Jolie Hope & 26800.00 \\
\rowcolor[gray]{0.90} \bottomrule % <-- the problem is here
\end{tabular}

所以有一个额外的命令 \rowcolor[gray]{0.90}在表的末尾,由于某种原因,它对下一个表有副作用。解决办法是不加 \rowcolor[gray]{0.90}在最后一行之后,这就是为什么您必须生成从 1 到 nrow(data) - 1 的序列的原因而不是 nrow(data) .

现在您应该看到预期的输出:

关于r - Knitr xtable 行颜色导致行标题单元格中的第二个表变黑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18969749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com