Мое намерение состоит в том, чтобы иметь возможность обновлять Powerpoint, который я сгенерировал в R, без необходимости создавать новую колоду. Чтобы это работало, мне нужно иметь возможность каким-либо образом удалять или перезаписывать контент, который присутствует в ранее созданной колоде Power Point.
Насколько я могу судить, ph_remove только кажется быть единственным фрагментом кода, который делает это. К сожалению, насколько я могу судить, он работает только с текстом, а не с графиками, фреймами данных или изображениями.
Вот пример кода:
Этот код генерирует колоду ppt с каждым типом объекта:
path_out <- [insert folder directory]
# prep ggplot
p1 <- iris %>%
ggplot() +
geom_point(aes(Sepal.Length,Petal.Length,color = Species), size = 3) +
theme_minimal()
# prep image
img.file <- file.path(R.home("doc"),"html","logo.jpg")
# prep flextable
ft <- flextable(head(mtcars)) %>%
autofit()
# prep editable graph (rvg)
p2 <- dml(ggobj = p1)
my_pres <- read_pptx() %>%
#slide 1
add_slide(layout = "Title and Content", master = "Office Theme") %>%
ph_with(value = "Hello World", location = ph_location_type(type = "title")) %>%
ph_with(value = "A footer", location = ph_location_type(type = "ftr")) %>%
ph_with(value = format(Sys.Date()), location = ph_location_type(type = "dt")) %>%
ph_with(value = "Hello world", location = ph_location_type(type = "body")) %>%
#slide 2
add_slide() %>%
ph_with(value = p1, location = ph_location_type("body")) %>%
#slide 3
add_slide() %>%
ph_with(external_img(img.file, width = 1.39, height = 1.06), location = ph_location_type("body"), use_loc_size = F) %>% # plot an image of specific size
#slide 4
add_slide() %>%
ph_with(ft, location = ph_location(type = "body")) %>%
#slide 5
add_slide() %>%
ph_with(p2, location = ph_location_type("body")) %>% # create a graph that can be edited
print(target = paste0(path_out,"example_v1.pptx"))
Этот код пытается удалить эти объекты из созданной колоды:
mypres2 <- read_pptx(paste0(path_out,"example_v1.pptx")) %>%
on_slide(index = 1) %>%
ph_remove(type = "title") %>%
ph_remove(type = "ftr") %>%
ph_remove(type = "dt") %>%
ph_remove(type = "body") %>%
on_slide(index = 2) %>%
ph_remove(type = "body") %>%
on_slide(index = 3) %>%
ph_remove(type = "body") %>%
on_slide(index = 4) %>%
ph_remove(type = "body") %>%
on_slide(index = 5) %>%
ph_remove(type = "body") %>%
print(target = paste0(path_out,"example_v2.pptx"))
Кто-нибудь знает любой метод, который позволил бы мне удалить их без необходимости вручную заменить их или снова создать колоду с нуля?