使用for循环将R officer ftext对象添加到fpar对象
我正在使用R package OfficeR创建计算结果的PowerPoint演示文稿 是否可以将ftext对象添加到程序控制下的同一fpar中,例如for循环或if语句 比如:使用for循环将R officer ftext对象添加到fpar对象,r,officer,R,Officer,我正在使用R package OfficeR创建计算结果的PowerPoint演示文稿 是否可以将ftext对象添加到程序控制下的同一fpar中,例如for循环或if语句 比如: fp1 <- ftext("Line 1", prop = fp_text()) for (c in seq(2,5)) fp1 <- fpar_add(ftext(sprintf("Line %d", c) , prop = fp_text())) fp1您可以使用do.call。(您可以将lap
fp1 <- ftext("Line 1", prop = fp_text())
for (c in seq(2,5))
fp1 <- fpar_add(ftext(sprintf("Line %d", c) , prop = fp_text()))
fp1您可以使用do.call
。(您可以将lappy
替换为生成ftext
列表的任何代码):
图书馆(官员)
prop感谢您学习了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" )
图书馆(官员)
bodyTxt官员应允许您轻松添加文本。虽然我只使用过officeR来处理word文档。如果您想深入研究,您可以使用RDCOMClient
包完成所有工作。它允许您制作powerpoint等microsoft应用程序,并在理论上像使用microsoft功能一样更改它们的各个方面。唯一的问题是没有任何R文档可以将microsoft函数映射到R类,因此需要在microsoft的开发页面上进行大量探索。祝你好运您是否愿意接受其他演示文稿框架而不是PowerPoint?谢谢David的快速回复。但是您只调用了一次fpar函数,并使用了大量ftext语句。这将导致所有ftext行在PowerPoint中位于同一行。我所寻找的是在一个组合的fpar中组合几个对fpar的调用,类似于在block_列表中所做的。我尝试组合fpar对象或块列表对象,但迄今为止失败。在OfficeR中可以这样做吗?好的,但您的问题是将ftext对象添加到同一fpar。我使用了do.call,但也可以使用for循环。“在一个组合的fpar中组合多个对fpar的调用”,我不确定我是否理解。您可以在fpar
中组合多个ftext
,在块列表中组合多个fpar
。您可以使用do.cal、包rlang(可能是其他方法)或双for循环构建该对象。
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" )