我有一个数据框,其中包含有关患者的几个信息。我用 R 创建了一个循环来处理每个信息并使用 ReporteR 将它们写入 docx 文件,但是通过这个循环,我获得了与我拥有的主题一样多的 docx,相反,我希望有一个唯一的 docx,其中包含所有信息一个接一个。
这是DF
Surname Name Born Subject Place
Halls Ben 09/08/2019 3387502 S.Jeorge
Beck David 12/08/2019 1319735 S.Jeorge
Essimy Daniel 12/08/2019 3387789 S.Jeorge
Rich Maria 12/08/2019 3307988 S.Agatha
这是我写的代码
dfY2 <- read.table("file.txt",header=T)
for(i in 1:nrow(dfY2)) {
my_title <- pot('Exam', textProperties(font.weight = "bold",font.size=12, font.family="Times New Roman"))
row1<-pot("Surname and Name",textProperties(font.weight="bold"))+" "+pot(dfY2[i,1])+" "+pot(dfY2[i,2])+" "+pot("Born",textProperties(font.weight="bold"))+pot(dfY2[i,3])
row2<-pot("SubjectID",textProperties(font.weight="bold"))+" "+pot(dfY2[i,4])+pot("Place",textProperties(font.weight="bold"))+" "+pot(dfY2[i,5])
doc<-docx("Template.docx")%>%
addParagraph(my_title, par.properties=parProperties( text.align = "center"))%>%
addParagraph(c(""))%>%
addParagraph(row1)%>%
addParagraph(row2)%>%
writeDoc(doc,file = paste0(dfY2[i,1],"output.docx"))
}
因此,通过这种方式,我获得了多个输出,而我想仅在一个文档中为每个主题一个接一个地编写所有行。 我能做什么? 谢谢
首先,我建议使用来自同一作者的较新软件包officer
ReporteRs
因为它不再维护。
对于您的问题:您需要在循环之前创建"docx"对象并在循环之后保存它(最终您还想在循环之前添加标题(:
doc <- docx("Template.docx")
for(i in 1:nrow(dfY2)) {
...
doc <- doc %>%
addParagraph(my_title, par.properties=parProperties( text.align = "center")) %>%
addParagraph(c("")) %>%
addParagraph(row1) %>%
addParagraph(row2)
}
writeDoc(doc, file ="output.docx")