【发布时间】:2018-04-11 08:25:57
【问题描述】:
这会有点罗嗦,因为没有适当的上下文,我看不出我该如何提出我的问题。
无需过多介绍,在我的summarytools 包中,我使用print.summarytools 的包装函数处理by() 对象,即view()。这个view() 函数可以识别通过by 或lapply() 创建的对象,并将其组件分派到包的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