R语言/ reporteRs循环写入多个docx

时间:2017-04-14 14:27:54

标签: r docx

我正在尝试(尽我所能)创建一个脚本,该脚本将使用R语言和reporteRs从纯文本文件生成格式化的word文档。

要从一个txt中提取文本我正在使用此帖子Dealing with readLines() function in R上找到的代码:

fileName <- "C:/MyFolder/TEXT_TO_BE_PROCESSED.txt"
con <- file(fileName,open="r")
line <- readLines(con)
close(con)

然后使用以下内容将提取的文本添加到docx:

doc <- docx(template="temp.docx")

接下来,添加标题(txt文件的第一行)

doc <- addParagraph( doc, value = line[1], bookmark = "titre", stylename = "Titre")

然后是txt文件的正文

doc <- addParagraph( doc, value = line[2:length(line)], value = line[2:55], stylename = "Contenu")

最后我创建了docx

writeDoc(doc, file = "output-file.docx")

我希望能够创建一个循环,这样我就可以从多个txt文件生成多个docx。我将非常感谢您的帮助

2 个答案:

答案 0 :(得分:0)

您可以使用lapply

执行此类操作
myFiles <- c("C:/MyFolder/TEXT_TO_BE_PROCESSED.txt", "C:/MyFolder/TEXT_TO_BE_PROCESSED2.txt") # or use list.files()

lapply(myFiles, function(fileName){
  con <- file(fileName,open="r")
  line <- readLines(con) # you could just call readLines(fileName)
  close(con)
  doc <- docx(template="temp.docx")
  doc <- addParagraph( doc, value = line[1], bookmark = "titre", stylename = "Titre")
  doc <- addParagraph( doc, value = line[2:length(line)], value = line[2:55], stylename = "Contenu")
  writeDoc(doc, file = paste0(fileName, "out.docx"))
})

答案 1 :(得分:0)

解决方案:

myFiles <- list.files()

lapply(myFiles, function(fileName){
line <- readLines(fileName)
doc <- docx(template="temp.docx")
doc <- addParagraph( doc, value = line[1], bookmark = "titre", 
stylename = "Titre »)
doc <- addParagraph( doc, value = line[2:length(line)], stylename = "Contenu")
writeDoc(doc, file = paste0(fileName, ".docx"))
})

再次感谢Richard