【问题标题】:xtable package: Skipping some rows in the outputxtable 包:在输出中跳过一些行
【发布时间】:2012-10-07 04:39:53
【问题描述】:

xtable 输出中,如果我希望某些行中没有任何内容,我会将NA 放在与我要跳过的行相对应的矩阵元素中。

但是这会导致类似& & & & & & & & \\ 的xtable 输出。我想知道的是如何做到这一点,所以我希望跳过的那一行只有\\

【问题讨论】:

  • 我不认为你可以欺骗 xtable 这样做。有趣的是:为什么?
  • 因为我在工作中生成了HUGE 数量的表。我这样做的方法是在记事本++中,我在 .txt 的顶部准备好行名,在 .txt 的底部,我复制了大约 80 行 xtable 输出,按住 alt(突出显示表格) ,剪切(ctrl+X),到.txt的顶部,左键点击最上面的rowname的右边,空格键20次,然后CTRL+V。这样,我可以自动构建一个非常大的表格,其中包含所有多列。除了&&&& 会碍事,因为\multicolumn 占用了太多列。
  • 如果你不知道怎么做,那我该如何编辑xtable()函数呢?如果我可以编辑该函数,那么最后我可以使用 grep() 搜索 & & & & 并替换行(也许)。
  • 你找到源代码here。您可以在print( xtable( x ) ) 之前完全删除R 中的那些空行,但是您需要双反斜杠吗?
  • 不,我不知道。在每个多列位置,我可以将 \\ 放在模板 rownamnes 之后。

标签: r dataframe latex xtable


【解决方案1】:

仍然不确定我是否理解正确,但我试了一下。

我在这里所做的最重要的假设是,您在该模板中的多列行始终位于同一位置。您可以使用 R 创建一个矩阵或数据框,这些行中没有(有用的)数据。

就本示例而言,多列行是 80 行数据框的 15、30 和 60 行,对应于 80 行模板。

您可以做什么:在R 中,完全消除那些 NA 行,这样我们的数据框现在只有 77 行。

您通过xtable 为您的模板插入空行

> addtorow <- list()
> addtorow$pos <- list()
> addtorow$pos[[1]] <- c(14,29,59)
> addtorow$command <- "\\\\ \n"
> print( xtable( o ), add.to.row = addtorow, include.rownames=FALSE )

这应该给你空行,不是&amp;,而是\\,这就是你要找的吗?

【讨论】:

  • @Harokitty 如果您接受这个作为对独立问题的独立回答,那就太好了......
  • 最有用的解决方案!
【解决方案2】:

如果您想要更大的灵活性,您可以使用xtablewriteLines 的组合来构建表格。让xtable 将第一部分写入文件(print.xtablefile = "bla.txt"),然后将\\ 写入writeLines,然后继续使用xtable。为防止两次写入标题,请将only.contents 设置为TRUE。请注意在调用print.xtablewriteLines 时将append 设置为等于TRUE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 2016-10-03
    • 2012-10-09
    相关资源
    最近更新 更多