5

我尝试使用print.xtable add.to.row这样的表格格式:

运动的

share of ballers    22.3 
share of skiers      4.6

share of smokers    20.3 
share of drinkers    6.6

我的 R 表确实包含额外的 row.names,即使这些行不包含任何值。我使用 add.to.row 选项为不同的行添加颜色,就像这里建议的那样,效果很好。但不起作用的是使用 xtable 添加粗体文本或hline在行之间添加其他内容。我总是收到如下错误消息:

Bad type area settings!检测到的线宽大约比启发式确定的线宽大 52%(typearea)。

因此,这可能意味着由于我的更改,该表的环境变得很大,但不知道该怎么做。注意我读过类似这样的帖子它修改了 xtable 输出本身,但即使这对我来说可能是可能的,但我正在寻找一个更简单的解决方案。因为如果我选择这个解决方案,我必须capture.output使用正则表达式替换在两者之间添加一些东西。

有没有解决的办法?还是有更简单的解决方案?

4

1 回答 1

12

对于hline部分,请参阅?print.xtable

hline.after:当' type="latex"'时,-1和''之间的数字向量"nrow(x)",包括在内,表示应该出现水平线的行

为了让你所有的行名更加大胆:

bold.allrows <- function(x) {
  h <- paste('\\textbf{',x,'}', sep ='')
  h
}
print(xtable(yourTable), 
      sanitize.rownames.function =  bold.allrows)

为了使某些行名称更加大胆,您可以为这些行添加“特殊标记”,例如BOLD

bold.somerows <- 
        function(x) gsub('BOLD(.*)',paste('\\\\textbf{\\1','}'),x)

print(xtable(yourTable), 
      sanitize.rownames.function =  bold.somerows)

例如:

require(xtable)
hh <- head(mtcars)[ , c(1:5)]
## I want to bold 1 and 3 rows 
rownames(hh)[c(1, 3)] <- paste('BOLD', rownames(hh)[c(1, 3)])
print(xtable(hh), sanitize.rownames.function =  bold.somerows)
于 2012-12-07T12:08:45.050 回答