【问题标题】:adding rows or boldify single row.names with print.xtables – add something in between rows?使用 print.xtables 添加行或加粗单个 row.names - 在行之间添加一些内容?
【发布时间】:2012-12-07 11:44:25
【问题描述】:

我尝试使用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 % (typearea)。

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

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

【问题讨论】:

    标签: r latex xtable


    【解决方案1】:

    对于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)
    

    【讨论】:

    • +1 表示指针。在所有这些文档之后,这里有点迷失了方向。但是 hline 似乎仅限于 hline。类似间距或插入字符的类似功能将是完美的。
    • 你到底想在哪里插入字符?
    • 例如行名。就像我的例子一样。添加粗体部分标题的行名会很酷。那时我不必将它们添加到我的 R 表中。
    • 感谢您的努力。但问题仍然是,我只想像示例中那样加粗一些行。
    • 归根结底我猜你是对的,必须在这里的某个地方使用 gsub,尽量避免它:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多