R Создать и выполнить офицерскую строку - PullRequest
0 голосов
/ 22 мая 2018

Я хочу создать стек PowerPoint с PDF-файлами, которые я создал.Я пытаюсь сделать это с офицером.Он работает нормально вручную, но я хочу написать PDF в коде.Используя макет Two Content, я хочу написать название pdf в заголовок и вставить сам pdf в тело.Вот код, который я разработал до сих пор.

library(officer)
library(magrittr)
pdfList <- c("pdf1.pdf", "pdf2.pdf", "pdf3.pdf")
pdfDir <- "pdfDir"
my_pres<-read_pptx("presentations/blank.pptx") # a blank pptx from powerpoint
pageStart <- "add_slide(layout='Two Content', master='Office Theme') %>% " 
titleListPre <-  "ph_with_text(type = 'title', str = '"
titleListPost <- "') %>% "
imageListPre <- "ph_with_img(src = 'graphics/SSPs/final/"
imageListPost <- "', type = 'body') "

for (i in pdfList) {
  titleString <- paste0(titleListPre, i, titleListPost)
  imageString <- paste0(imageListPre, i, imageListPost)
  finalString <- paste0(pageStart, titleString, imageString)
   my_pres <- my_pres %>%  eval(parse(text = finalString))
}

Проблема, с которой я столкнулся, это последняя строка в цикле for.Если я вручную создаю эту строку, как показано ниже, она работает

my_pres <- my_pres %>% add_slide(layout='Two Content', master='Office Theme') %>% ph_with_text(type = 'title', str = 'pdf1.pdf') %>% ph_with_img(src = 'graphics/SSPs/final/pdf1.pdf', type = 'body')

, но подход eval / parse не работает (с этим сообщением "invalid 'envir' argument of type 'expression"), и ни один не работает как .formula (finalString)

1 Ответ

0 голосов
/ 22 мая 2018

Я разобрался, где делать eval / parse.Код ниже работает, как я хотел.

pageStart <- "add_slide(layout='Two Content', master='Office Theme') %>% " 
titleListPre <-  "ph_with_text(type = 'title', str = '"
titleListPost <- "') %>% "
imageListPre <- "ph_with_img(src = 'graphics/SSPs/final/"
imageListPost <- "', type = 'body') "

for (i in imageList) {
  titleString <- paste0(titleListPre, i, titleListPost)
  imageString <- paste0(imageListPre, i, imageListPost)
  finalString <- paste0("my_pres %>% ",pageStart, titleString, imageString)
  my_pres <- eval(parse(text = finalString))
}
...