2

这会有点罗嗦,因为没有适当的上下文,我看不出我怎么能问我的问题。

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

链接到包开发页面:

该包提供了两种呈现内容的方式:rmarkdown throughpander和 HTML with RStudio's 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')

此示例可作为github 上的 Gist 获得

编织后的结果:

呈现的 html 内容

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

我试过lapply(groupstats, print, method = 'render')了,但后来[[n]]我没有出现,而是$names出现了。

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

包源代码 包源代码 相关的chuck,参见summarytool的dev-current分支R/view.R文件,第~78-116行。

4

1 回答 1

6

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

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

可能与您的示例中的[1]and一起显示[2],但是

tagList(thelist)

或者

tagList(a, b)

只会显示这两个项目。

于 2018-04-12T09:44:19.753 回答