У меня есть список из примерно 24 графиков, и я хочу создать слайд-шоу с каждым графиком на слайде. Я использую пакет R под названием Officer . На данный момент я могу добавить только один график за раз, как я могу создать функцию с al oop для этого:
library(lubridate)
library(tidyr)
library(dplyr)
library(officer)
# Data
df <- data.frame("Hospital" = c("Buge Hospital", "Buge Hospital", "Greta Hospital", "Greta Hospital",
"Makor Hospital", "Makor Hospital"),
"Period" = c("Jul-18","Aug-18", "Jul-19","Aug-19", "Jul-20","Aug-20"),
"Medical admissions" = c(12,56,0,40,5,56),
"Surgical admissions" = c(10,2,0,50,20,56),
"Inpatient admissions" = c(9,5,6,0,60,96))
df$ward_totals <- rowSums(df[3:5])
df <- df %>% mutate(Date = ymd(parse_date_time2(as.character(Period),
orders = "%b-%y")))
my_plot <- function(df, hospital) {
ggplot(df %>% filter(Hospital == hospital),
aes(x = Date, y = ward_totals, group = 1)) +
geom_bar(stat = "identity",fill="steelblue") +
scale_x_date(date_breaks = "month", date_labels = "%b %Y")+
geom_text( aes(label= ward_totals), vjust=1.6) +
ggtitle(hospital)+
theme(axis.text.x = element_text(angle = 45, hjust = 1))
}
my_plot(df, "Buge Hospital")
#Loop through Place var, create plots & store them in a list using purrr::map()
plot_list <- unique(df$Hospital) %>%
purrr::set_names() %>%
purrr::map( ~ my_plot(df, .x))
str(plot_list, max.level = 1)
Теперь вот как я могу ввести одну больницу в слайд-шоу
myppt <- read_pptx()
mylab <- layout_summary(myppt)[[1]] # Slide Layout Name
mytmp <- layout_summary(myppt)[[2]][1] # Show Slide Master Name
myppt <- myppt %>%
add_slide(layout="Title Slide", master=mytmp) %>%
ph_with_text(type="ctrTitle", str="Hospital DATA TRENDS") %>%
ph_with_text(type="subTitle", str="from 2019 to 2020") %>%
ph_with_text(type="dt", str=format(Sys.Date())) %>%
add_slide(layout="Title and Content", master=mytmp) %>%
ph_with_text(type="title", str="Buge Hospital") %>%
ph_with_gg(value= plot_list[1]) %>%
add_slide(layout="Two Content", master=mytmp)
print(myppt, target="DHIS2_trends.pptx")
Как IL oop можно просмотреть все графики в списке и добавить отдельные слайды для каждого графика?