Могут быть более элегантные способы сделать это, но следующий подход должен работать:
library(readtext)
library(dplyr)
library(purrr)
library(stringr)
Получить имена файлов из вашего рабочего каталога. Следующий код предполагает, что там существуют только интересующие вас файлы. В противном случае вы можете фильтровать с помощью grep(".txt",file_names)
et c.
file_names <- list.files(full.names = F)
Считывать файлы из списка file_names
в кадр данных df
как строки, используя map_dfr
from purrr
df <- map_dfr(file_names,readtext)
Создать новую переменную file_index
для использования с group_by
для объединения текста из файлов с идентичным значением file_index
(1, 2 или 3) , Используйте str_c
, чтобы свернуть строки. Вы можете изменить шаблон для combo_file_name
в пределах paste
, если вы хотите по-другому назвать файлы, содержащие объединенный текст
combo_data <- df %>% mutate(file_index = sapply(strsplit(doc_id, "_"), "[", 2)) %>% group_by(file_index) %>%
summarize(combo_file_name = paste("combo_file",unique(file_index),sep="_") , combo_text = str_c(text, collapse = ", ")) %>%
ungroup() %>% select(combo_file_name,combo_text)
Создать функцию для записи файлов, используя combo_data
в качестве входных данных и сохранение файлов как combo_1.txt, combo_2.txt et c.
write_file <- function (df_in){
fileConn <- file(paste(df_in[1],".txt",sep=""))
writeLines(df_in[2], fileConn)
close(fileConn)
}
apply(combo_data,1,write_file)
Используйте getwd()
, чтобы найти рабочий каталог, в котором сохранены объединенные файлы