【问题标题】:Rmarkdown - printing a list of objects without showing those pesky [[indices]]Rmarkdown - 打印对象列表而不显示那些讨厌的 [[indices]]
【发布时间】:2018-04-11 08:25:57
【问题描述】:

这会有点罗嗦,因为没有适当的上下文,我看不出我该如何提出我的问题。

无需过多介绍,在我的summarytools 包中,我使用print.summarytools 的包装函数处理by() 对象,即view()。这个view() 函数可以识别通过bylapply() 创建的对象,并将其组件分派到包的print(),并带有与标题和脚注相关的适当参数,等等(第一个元素不会收到相同的论点是第二个,也不是最后一个)。

包开发页面链接:

该包提供了两种渲染内容的方式:rmarkdown 到pander,以及HTML 和RStudio 的htmltools。就 rmarkdown/pander 而言,我已经取得了令人满意的结果。对于 rmarkdown 文档中的 HTML 呈现,情况并非如此。

例如:

library(devtools)
install_github("dcomtois/summarytools", ref = "dev-current")
library(summarytools)

# call the descr() function through by() to get stats by gender
groupstats <- by(data = exams, INDICES = exams$gender, FUN = descr)

# Use the view() function to neatly display results
view(groupstats, method = 'render')

此示例以Gist on github 的形式提供。

编织后的结果:

我尝试了几件事,但都不满意。由于 summarytool 的 print 方法返回的对象属于 shinytag 类,(也许)理想的解决方案是将所有这些组合成一个类 shinytag 的列表,但我不知道有任何方法可以做到这一点htmltools。在我看来,手工挑选列表元素会带来麻烦,因为里面有很多列表嵌套。

我尝试了lapply(groupstats, print, method = 'render'),但随后出现了[[n]],而不是$names

所以我的问题是:我怎样才能摆脱输出中的[[n]]

包源代码 包源代码相关卡盘见summarytool's dev-current branchR/view.R文件,第~78-116行。

【问题讨论】:

  • 你试过用htmltools::tagList把东西放在一起吗?
  • 天哪,这正是我所需要的。非常感谢!如果你想回答这个问题,我会接受。

标签: r-markdown knitr htmltools summarytools


【解决方案1】:

如果您有 list() 的项目将打印为 HTML,您可以使用 htmltools::tagList() 将它们放在一起,列表的索引将不会显示。例如,

library(htmltools)
thelist <- list(a, b)

可能会像您的示例一样显示 [1][2],但是

tagList(thelist)

tagList(a, b)

只会显示这两个项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多