Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用for循环将R officer ftext对象添加到fpar对象_R_Officer - Fatal编程技术网

使用for循环将R officer ftext对象添加到fpar对象

使用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

我正在使用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
。(您可以将
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" )