使用print.xtables添加行或加粗单个row.names - 在行之间添加内容?

时间:2012-12-07 11:44:25

标签: r latex xtable

我尝试使用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选项将颜色添加到不同的行,如建议的here,这些行工作正常。但是不起作用的是在xtable中添加粗体文本或在行之间添加额外的hline。我总是收到如下错误消息:

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

所以这可能意味着由于我的变化,桌子对于它的环境变得很大,但是不知道如何处理它。注意我已经阅读了像one这样修改xtable输出本身的帖子,但即使这对我来说可能也是可行的,我正在寻找一个更简单的解决方案。因为如果我选择这个解决方案,我必须capture.output并使用regexp替换来添加内容。

有解决方法吗?或者是否有更简单的解决方案?

1 个答案:

答案 0 :(得分:11)

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

  

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

要加粗所有行名称:

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)

e.g:

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)