Rmarkdown - печать списка объектов без показа этих надоедливых [[index]]

Это будет немного многословно, так как без надлежащего контекста я не могу понять, как я могу задать свой вопрос.

Не вдаваясь в подробности, по моему summarytools пакет, я имел дело с by() объекты с помощью функции-обертки для print.summarytoolsа именно view(), это view() функция может идентифицировать объекты, созданные с помощью by или же lapply()и отправить его компоненты в пакет print()с соответствующими аргументами, относящимися к заголовкам и сноскам и т. д. (первый элемент не получит те же аргументы, что и второй, или последний).

Ссылка на страницу пакета разработчика:

Пакет предлагает два способа рендеринга контента: panderи HTML с RStudio's htmltools, Что касается rmarkdown/pander, я достиг удовлетворительных результатов. Чего нельзя сказать о рендеринге HTML внутри документов rmarkdown.

Например:

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 на GitHub.

Результаты после вязания:

визуализированный HTML-контент

Я пробовал несколько вещей, ни одна из которых не была удовлетворительной. Поскольку объекты, возвращаемые методом print summarytool, относятся к классу shinytag(возможно) идеальным решением было бы объединить все это в один список классов shinytag, но я не знаю ни одного способа сделать это с htmltools, И выбор элементов списка вручную кажется мне рецептом для неприятностей, так как там много вложений в списки.

Я старался lapply(groupstats, print, method = 'render'), но тогда вместо того, чтобы [[n]]х, у меня есть $names появление.

Поэтому мой вопрос: как я могу избавиться от [[n]]в выходной?

Исходный код пакета Информацию о соответствующем коде исходного кода пакета см. В ветке dev-current Summarytool: R/view.R файл, строка ~ 78 -116.

1 ответ

Решение

Если у тебя есть list() элементов, которые будут печататься в формате HTML, вы можете собрать их вместе, используя htmltools::tagList() и индексы списка не будут отображаться. Например,

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

может отображаться с [1] а также [2] как в вашем примере, но

tagList(thelist)

или же

tagList(a, b)

будет просто отображать два элемента.

Другие вопросы по тегам