Добавление объектов ftext R-офицера в объект fpar с помощью цикла for - PullRequest
0 голосов
/ 28 января 2020

Я использую пакет R OfficeR для создания презентации результатов моих расчетов в PowerPoint.

Можно ли добавить объекты ftext в тот же fpar под управлением программы, например, для l oop или Если заявление?

Что-то вроде:

fp1 <- ftext("Line 1", prop = fp_text())
for (c in seq(2,5)) 
  fp1 <- fpar_add(ftext(sprintf("Line %d", c) , prop = fp_text()))

Спасибо за ваши предложения.

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Спасибо за то, что выучили меня утверждение do.call. Я никогда не использовал его раньше, и поэтому мой вопрос не был достаточно точным, чтобы объяснить, что я искал. Этот код решает мою проблему:

library(officer)

bodyTxt <- lapply(seq(1,5), function(x) fpar(ftext(sprintf("Line %d", x) , prop = prop)))
bodyTxt[[3]] <- fpar(ftext(" " , prop = prop))

bl <- do.call(block_list, bodyTxt)

doc <- read_pptx()
doc <- add_slide(doc)
doc <- ph_with(x = doc, value = bl,
               location = ph_location_type(type="body") )

print(doc, target = "test.pptx" )

Большое спасибо!

0 голосов
/ 28 января 2020

Вы можете использовать do.call для этого. (Вы можете заменить lapply на любой код, который может составить список ftext):

library(officer)

prop <- fp_text()
fp <- do.call( 
  fpar, 
  lapply(seq(2,5), 
         function(x) ftext(sprintf("Line %d", x) , prop = prop) )
)

doc <- read_pptx()
doc <- add_slide(doc)
doc <- ph_with(x = doc, value = fp,
               location = ph_location_type(type="body") )

print(doc, target = "test.pptx" )

enter image description here

...