【问题标题】:Hmisc tilde rownameHmisc 波浪号行名
【发布时间】:2013-07-25 23:26:48
【问题描述】:

我正在尝试将 R 数据框中的行名称分组,以便使用 Hmisc latex() 函数进行排版。问题是latex() 在每行名称之前添加了两个波浪号,这些出现在我的文档中。

如何删除这些字符或不显示它们?

例子:

test.df <- data.frame(row.names=letters[1:4],   col1=1:4, col2=4:1, col3=4:7)
latex(test.df, file="", n.rgroup=c(2,2), rgroup=c("First","Second"))

编辑: Latex 函数发生在 knitr 块内。生成的 .Rnw 文件是通过 knit2pdf 函数编译的,我认为该函数默认使用 pdfLatex。文档中的所有其他表格/图形都可以正常编译,不会出现任何残留的 LaTex 语法。

【问题讨论】:

    标签: r hmisc


    【解决方案1】:

    如果您将 latex 与 TeX 处理器一起使用,它们将不会显示:

    test.df <- data.frame(row.names=letters[1:4],   col1=1:4, col2=4:1, col3=4:7)
    latex(test.df, file="test", n.rgroup=c(2,2), rgroup=c("First","Second"))
    

    如果您想“捕获”“打印”到屏幕上的文本并删除带有sub 的双波浪号,那么您可能需要使用capture.output,因为latex 似乎没有返回值,但更像cat 函数,它作为副作用输出到屏幕:

    out <- sub("^~~", "", capture.output( 
                         latex(test.df, file="", 
                             n.rgroup=c(2,2), rgroup=c("First","Second")))) 
    

    然后您可以使用带有文件参数的 writeLines 或 cat 将该文本发送到目的地。我想您可以将sub 调用内联而不将结果转移到命名对象。这将取决于您如何处理此文本。

    【讨论】:

    • latex 函数发生在 knitr 块内,生成的 .Rnw 文件使用 knitr knit2pdf 函数编译。文档中的所有其他表格/图形都可以正常编译,所以我认为这是波浪号特有的问题。 (使用此信息编辑的原始问题)。一切都通过 Tex 处理器。感谢您的帮助。
    • capture.output 和 sub 解决方案完美运行。谢谢你。剩下的唯一问题是:如何在不使用波浪号的情况下缩进 Hmisc 列中的内容?
    【解决方案2】:

    如果您不想使用 LaTeX,那么我建议您使用 ascii package,它具有非常高级的选项,可以很好地输出原始文本(它还有 rgroup 和 n.rgroup 选项用于对行名进行分组)。如果您有兴趣将表格转换为 Word 文档(或只是 HTML),我建议使用我的 htmlTable function 进行 Markdown - 参数基于 Hmisc 乳胶参数,因为我在切换到 Markdown 时需要替换,因此你需要做的是在加载我的包后将函数名称更改为htmlTable。

    【讨论】:

    • 这个项目在这一点上非常依赖 LaTex,但我以后会检查 ascii 包。谢谢你的提示。
    猜你喜欢
    • 2019-07-07
    • 2019-04-09
    • 2016-12-06
    • 2012-10-10
    • 2011-06-06
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    相关资源
    最近更新 更多