我有几个rtf文件,想搜索文件中是否出现某些单词。如果出现,我想提取其中带有该单词的整个句子。
这是我想重复的代码部分。我已经在文档“ a1”上尝试过此操作,但是我要搜索的文件夹中有文档a1至a10。
library(striprtf)
files <- list.files(path="/Users/Jane/R/Test", pattern="*.rtf", full.names=TRUE, recursive=FALSE)
rtf <- read_rtf("a1.rtf", verbose = FALSE, row_start = "*| ", row_end = "",
cell_end = " | ", ignore_tables = FALSE, check_file = TRUE)
text <- unlist(strsplit(rtf, "\\."))
toMatch <- c("passive","fund act")
matches <- unique(grep(paste(toMatch,collapse="|"),
text, value=TRUE))
matches <- data.frame(matches)
最终输出应该是一个数据帧,其中一列是文件名(即a1),句子中包含“被动”和“基金行为”。
答案 0 :(得分:1)
您可以使用lapply()
并定义一个函数来执行所需的操作。 results
将是包含所有匹配数据帧的列表
library(striprtf)
files <- list.files(path="/Users/Jane/R/Test", pattern="*.rtf", full.names=TRUE, recursive=FALSE)
# files <-paste0(paste0("a",1:10),".rtf")
results = lapply(files, function(x) {
rtf <- read_rtf(x, verbose = FALSE, row_start = "*| ", row_end = "",
cell_end = " | ", ignore_tables = FALSE, check_file = TRUE)
text <- unlist(strsplit(rtf, "\\."))
toMatch <- c("passive","fund act")
matches <- unique(grep(paste(toMatch,collapse="|"),
text, value=TRUE))
matches <- data.frame(matches)
})