Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
对象上的R重复函数_R_Loops_Officer - Fatal编程技术网

对象上的R重复函数

对象上的R重复函数,r,loops,officer,R,Loops,Officer,我正在尝试使用officer将图像添加到Word文档中。我有一个完整的目录的图像,我想循环通过价值。我遇到的问题是,我需要将图像添加到文档中,然后将下一个图像添加到我刚刚通过添加最后一个图像创建的新创建的文档中 下面是一个没有循环或函数的代码示例: library(magrittr) library(officer) read_docx() %>% # create document body_add_img("img1.png", width = 3, heigh

我正在尝试使用officer将图像添加到Word文档中。我有一个完整的目录的图像,我想循环通过价值。我遇到的问题是,我需要将图像添加到文档中,然后将下一个图像添加到我刚刚通过添加最后一个图像创建的新创建的文档中

下面是一个没有循环或函数的代码示例:

library(magrittr)
library(officer)
read_docx() %>% # create document
  body_add_img("img1.png", width = 3, height = 4) %>% # add image
  body_add_img("img2.png", width = 3, height = 4) %>% # add image
  body_add_img("img3.png", width = 3, height = 4) %>% # add image
  print(target = "samp.docx") # write document
在这种情况下,使用map和lappy不起作用,因为每次迭代都需要返回上一次迭代的对象。我试着用for循环编写一个函数,但我认为我做得太离谱了。任何帮助和指点都将不胜感激。

我想您可以在这里使用reduce。例如,使用一点purrr

reduce不断地将结果反馈回自身。

我认为您可以在这里使用reduce。例如,使用一点purrr


reduce不断地将结果反馈回自身。

我不确定您对for循环的尝试是什么,但是这个简单的循环似乎起作用了

library(officer)
data <- read_docx()
image_list <- paste0('img', 1:3, '.png')

for(i in image_list) {
     data <- body_add_img(data, i, width = 3, height = 4)
}
print(data, target = "samp.docx")

我不确定您对for循环的尝试是什么,但这个简单的循环似乎有效

library(officer)
data <- read_docx()
image_list <- paste0('img', 1:3, '.png')

for(i in image_list) {
     data <- body_add_img(data, i, width = 3, height = 4)
}
print(data, target = "samp.docx")

看看purr::reduce?它允许每个迭代对前一个迭代的输出进行操作。不断添加到同一对象的for循环也应该可以工作?它允许每个迭代对前一个迭代的输出进行操作。在同一个对象中不断添加内容的for循环也应该起作用。