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.
Результаты после вязания:
Я пробовал несколько вещей, ни одна из которых не была удовлетворительной. Поскольку объекты, возвращаемые методом 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)
будет просто отображать два элемента.