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

Mat*_*ert 5 latex r xtable

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

体育

share of ballers    22.3 
share of skiers      4.6
Run Code Online (Sandbox Code Playgroud)

瘾

share of smokers    20.3 
share of drinkers    6.6
Run Code Online (Sandbox Code Playgroud)

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

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

所以这可能意味着由于我的变化,桌子对于它的环境变得很大,但是不知道如何处理它.注意我读的帖子这样一个可修改xtable输出本身,但即使这可能可能对我来说,我在寻找一个简单的解决方案.因为如果我采用这种解决方案,我必须capture.output使用正则表达式替换来在它们之间添加一些东西.

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

ags*_*udy 11

对于该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)
Run Code Online (Sandbox Code Playgroud)

要加粗一些行名称,可以为这些行添加"特殊标记",例如BOLD:

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

print(xtable(yourTable), 
      sanitize.rownames.function =  bold.somerows)
Run Code Online (Sandbox Code Playgroud)

例如:

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)
Run Code Online (Sandbox Code Playgroud)