#r #r-markdown
Вопрос:
У меня есть много похожих наборов данных, которые я хочу вывести в файл RMD и сохранить каждый вывод на определенной вкладке.
Я создал две функции, которые генерируют таблицу (с помощью Kable) и график ggplot. Чтобы избежать повторения написания их всех (это заняло бы у меня целую вечность) Я попытался написать цикл, используя функцию cat (), чтобы сгенерировать для меня фрагменты и вывести таблицы и графики на правильной вкладке.
Однако, хотя цикл, который я сделал, правильно генерирует заголовки и вкладки, он вообще не выводит графики или таблицы. На самом деле он лишь изредка выводит сюжет на первой вкладке и даже тогда часто портит весь порядок фрагментов.
Смотрите пример ниже:
```{r,fig.width=6,echo=FALSE,results =“asis”}
types <- c(“mpg”,”cyl”,”hp”)
Headers <- c(“header 1”,”header 2”)
for (i in headers) {
cat(paste0(“# “,i,”{.tabset} n”))
for (j in types) {
cat(paste0(“# “,j,” n”))
#this is where the problems begin
cat(“```{r} n”)
plot(mtcars[j])
cat(" n")
}
}
Кроме того, в нынешнем виде кажется, что ни базовый график R не работает, ни функции ggplot/kable, которые я создал.
У меня было много проблем с этим, и мне не хватает времени для этого отчета, так что любая помощь будет очень признательна!! Если есть лучший способ сделать это, пожалуйста, дайте мне знать!
Спасибо за помощь!
Ответ №1:
При следующих корректировках ваш минимальный рабочий пример дает желаемый результат:
```{r, fig.width=6, echo=FALSE, results ="asis"}
types <- c("mpg","cyl","hp")
headers <- c("header 1","header 2")
for (i in headers) {
cat(paste0("## ",i,"{.tabset} n"))
for (j in types) {
cat(paste0("### ",j," n"))
plot(mtcars[j])
cat("nn")
}
}
```
Обратите внимание , что вкладка должна быть на один уровень ниже соответствующего набора вкладок (например, набор вкладок на «уровне» ##
, вкладки на уровне ###
). Кроме того, график/таблица должны быть сгенерированы в кодовом блоке, а не доставлены на консоль cat()
(по крайней мере, так было в моих приложениях).
Комментарии:
1. Привет! Так что, похоже, это работает для сюжета, но когда я пытаюсь вывести kable(mtcars$j) или ggplot, завернутый в ggplotly, он ничего не выводит? Даже если я оберну их функциями. Есть какие-нибудь подсказки, что здесь происходит и как я могу это решить?
2. К сожалению, у меня тоже нет решения для этого. Несколько глупым, но, возможно, рабочим решением было бы сначала сгенерировать упомянутые вами графики/таблицы и сохранить их локально (используя
htmltools::save_html()
, а затем импортировать локально сохраненные выходные данные HTML в RMarkdown-отчет. Однако я убежден, что есть лучшее решение.