Внутри документа 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