gpt4 book ai didi

r - 在 LaTeX 格式列联表的行和列标题中包含维度名称

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

如果列联表中的属性类别仅仅是数字,仅使用这些数字作为列/行标题是不够的——需要描述数字的含义。下图显示了家庭样本中家庭规模与外国人数量的交叉分类:

Example table

有没有人有使用 R+LaTeX 制作此类表格的经验?

最佳答案

我自己有一个相当黑客的解决方案,但我也想看看其他方法。当然,如果将此代码的变体添加到 xtable 中会更好。 .

我的解决方案包括更新 rownames()colnames()表的。行标题进入 rownames()[1] ,列标题进入 colnames()[1] .有几件事必须记住:

  • 如果使用行标题,结果表中的列数会多一。
    因此,tabular环境必须由用户创建。
  • 如果添加了行标题,则列标题必须包含额外的 &
  • 在此操作后不要清理或以其他方式重新格式化行或列名称
  • add.crosstab.headers函数处理一切。它可以应用于 xtable() 的结果称呼。还需要一些辅助函数。
    macrify <- function(m, s, bs='\\') {
    paste(bs, m, '{', s, '}', sep='')
    }

    boldify <- function(s) {
    macrify('textbf', s)
    }

    add.crosstab.headers <- function(t, row.header=NA, col.header=NA,
    sanitize=boldify) {
    rownames(t) <- sanitize(rownames(t))
    colnames(t) <- sanitize(colnames(t))
    if (!is.na(row.header)) {
    colnames(t)[1] <- paste('&', colnames(t)[1])
    rownames(t) <- paste('&', rownames(t))
    row.header <- sanitize(row.header)
    row.header <- macrify('rotatebox{90}', row.header)
    multirow <- macrify('multirow', nrow(t))
    multirow <- macrify(multirow, '*', bs='')
    row.header <- macrify(multirow, row.header, bs='')
    rownames(t)[1] <- paste(row.header, rownames(t)[1])
    }
    if (!is.na(col.header)) {
    col.header <- sanitize(col.header)
    multicolumn <- macrify('multicolumn', ncol(t))
    multicolumn <- macrify(multicolumn, 'c', bs='')
    col.header <- macrify(multicolumn, col.header, bs='')
    col.header <- paste(col.header, '\\\\\n')
    col.header <- paste(col.header, '&')
    if (!is.na(row.header)) {
    col.header <- paste('&', col.header)
    }
    colnames(t)[1] <- paste(col.header, colnames(t)[1])
    }
    t
    }

    用法是这样的。
    dat <- matrix(round(rnorm(9, 20, 10)), 3, 3)
    t <- xtable(dat)
    t <- add.crosstab.headers(t, row.header='Foreigners', col.header='Total persons')

    print.xtable(t,
    only.contents=TRUE,
    booktabs=TRUE
    , sanitize.text.function=identity
    )

    关于r - 在 LaTeX 格式列联表的行和列标题中包含维度名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10703802/

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