Rmarkdown: предотвращение рендеринга фрейма данных asis в блоке R - PullRequest
0 голосов
/ 05 августа 2020

Внутри документа Rmarkdown я использую вложенные циклы for (я нашел это проще, чем вложение lapply) для одновременного выполнения функции и генерации вывода в формате Rmarkdown.

Два выхода этой функции и объект ggplot и фрейм данных

Проблема, с которой я столкнулся, выглядит следующим образом:

  • Мне нужно отформатировать блок R 'asis' ({r results = 'asis'}) для правильной визуализации заголовков Rmarkdown и макета вкладок для документа
  • Однако при форматировании R-образной формы 'asis' мой фрейм данных отображается как обычный текст, а не в html стиль, который я указал в заголовке YAML

Есть ли способ сохранить стиль html фрейма данных при сохранении форматирования зажима R как {r results = 'asis'}?

Я включил образец кода, который иллюстрирует эту проблему. Вы можете переключаться между {r} и {r results = 'asis'}, чтобы получить два разных вывода Rmarkdown.

До сих пор я пробовал использовать различные варианты print внутри функции и вставлять символы новой строки в l oop чтобы попытаться достичь этой цели ... безуспешно.

Любая помощь будет очень принята!

#function to be used in loop. Includes ggplot and df output
iris_plotter <- function(species, petal_width, result = "both") {
  
  iplot <- iris %>% 
    filter(Species == species, Petal.Width == petal_width) %>% 
    ggplot(aes(x = Petal.Length, y = Sepal.Width)) + geom_point()
  
  df <- layer_data(iplot, i = 1L) %>% 
    select(x,y)
  
  if(result == "table"){
    print(df)
  }
  if(result == "plot"){
    print(iplot)
  }
  if(result == "both"){
    print(iplot)
    df
  }
}

#For the sake of this example and to prevent excessive lopping, I have shortened the input into the loop
species_short <- c("setosa")
petal_width_short <- c(0.2, 0.4, 0.3)

for (i in species_short) {
  cat("  \n##", i, "{.tabset}", "  \n")
  for (j in petal_width_short) {
    cat("  \n###", j, "  \n")
    iris_plotter(i, j, "plot")
    cat("  \n")
    iris_plotter(i,j, "table")
  }
}

PS Я приложил изображение желаемого результата, который я может достигаться при форматировании Rmarkdown вручную, а не в al oop

Желаемый результат Rmarkdown

...