Установить заголовок изображения в соответствии с динамическим числом итераций - PullRequest
0 голосов
/ 14 марта 2019

Мой скрипт ниже должен создать текстовый документ с таким количеством изображений, сколько итераций в цикле for(). В этом случае я использую 2, но проблема в том, что это число может отличаться. Также название изображений должно быть установлено в соответствии с количеством итераций. Изображение 1, Изображение 2 и т. Д. Здесь вместо 2 изображений я создаю 4, и количество итераций не будет каждый раз равным 2.

library(officer)
library(magrittr)
library(flextable)

src <- tempfile(fileext = ".png")
png(filename = src, width = 5, height = 6, units = 'in', res = 300)
barplot(1:10, col = 1:10)

dev.off()


current_dir <- getwd()

my_doc <- read_docx()


#Baseline Summary Stats Table
for(i in 1:2){
  my_doc <- my_doc %>% 
    body_add_img(src = src, width = 5, height = 6, style = "centered") %>% 
    body_add_par(paste0("Image",i,"asasa"), style = "Normal")


#Baseline Summary Stats Table

my_doc <- my_doc %>% 
  body_add_img(src = src, width = 5, height = 6, style = "centered") %>% 
  body_add_par(paste0("Image",i,"asasa"), style = "Normal")
}
#writing to word file
print(my_doc, target = "first_example.docx")

1 Ответ

1 голос
/ 14 марта 2019

Я не уверен, что понимаю вашу проблему. Код работает отлично. Он просто печатает четыре изображения, потому что вы повторяете

my_doc <- my_doc %>% 
body_add_img(src = src, width = 5, height = 6, style = "centered") %>% 
body_add_par(paste0("Image",i,"asasa"), style = "Normal")

в вашем цикле.

Попробуйте следующее

library(officer)
library(magrittr)
library(flextable)

src <- tempfile(fileext = ".png")
png(filename = src, width = 5, height = 6, units = 'in', res = 300)
barplot(1:10, col = 1:10)

dev.off()


current_dir <- getwd()

my_doc <- read_docx()


# set number of iterations
n=3

#Baseline Summary Stats Table
for(i in 1:n){
  my_doc <- my_doc %>% 
    body_add_img(src = src, width = 5, height = 6, style = "centered") %>% 
    body_add_par(paste0("Image",i,"asasa"), style = "Normal")


}
#writing to word file
print(my_doc, target = "first_example.docx")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...