我的目标是将重复的部分添加到.docx文件中,通过从数据框中提取值来更改连续部分中的值。使用https://cran.r-project.org/web/packages/officer/vignettes/word.html处的示例代码,我已经能够添加一个部分,但我一直无法弄清楚如何使这个代码在循环中工作。
这是一个最小的例子:
library(officer)
library(magrittr)
lastRow <- 10
my_doc <- read_docx() %>%
for(rowNum in 1:lastRow){
body_add_par("ID: ") %>%
if(rowNum < lastRow){
slip_in_text(paste("ID:", rowNum)) %>%
}else{
slip_in_text(paste("ID:", rowNum))
}
print(my_doc, target = "sample.docx")
以下是我在控制台中看到的错误消息:
Error: unexpected '}' in:
" slip_in_text(paste("ID:", rowNum)) %>%
}"
> slip_in_text(paste("ID:", rowNum))
Error in x$default_styles : $ operator is invalid for atomic vectors
> }
Error: unexpected '}' in "}"
似乎很明显,问题是通过将连续调用body_add_par与%&gt;%运算符连接起来而产生的,但我还没有找到解决方法。有没有其他人遇到类似的问题并制定出解决方案?
感谢。
答案 0 :(得分:1)
您可以删除最外面的%>%
,并在循环中简单地使用赋值和管道运算符的组合:
library(officer)
library(magrittr)
lastRow <- 10
my_doc <- read_docx()
for(rowNum in 1:lastRow) {
my_doc <- my_doc %>% body_add_par("ID: ") %>% slip_in_text(paste("ID:", rowNum))
}
print(my_doc, target = "sample.docx")
答案 1 :(得分:0)
当然可以使用for循环向doc添加段落。这是我发现在军官中做项目符号列表的唯一方法。 这段代码可以让我从sector_down_list
的元素中创建一个列表api/json?pretty=true&depth=1 or 2 or 3