Импорт большого количества текстовых файлов и удаление повторяющихся строк - PullRequest
0 голосов
/ 24 января 2020

Я работаю в серии интервью, которые я получил из базы данных в моей работе, каждое в отдельном текстовом файле (обычный файл с расшифровкой в ​​несколько строк).

Каждое интервью будет частью фрейма данных в качестве переменной. Метаданные для каждого интервью находятся в отдельном фрейме данных, я должен импортировать в него тексты (целое интервью на строку). Это более 700 текстовых файлов для импорта.

Вопрос в том, что в файлах интервью много повторяющихся строк, и из-за количества файлов импорт по одному и использование x <- unique (x) исключено. Я написал код ниже, чтобы попытаться импортировать их:

files_captions <- list.files(path="path/to/the/files", pattern="*.txt", full.names=TRUE)
folder_captions <- "path/to/the/folder"    
clean_text <- function(myfile){
  n <- length(myfile)
  myfile <- c(stringr::str_remove_all(myfile[-n], "[\n].*"),
              myfile[n])
  myfile <- unique(myfile)
  myfile <- paste0(myfile, collapse = "\n")
  myfile
}
texts <- ldply(clean_text(files_captions),  read_file)

Но вместо того, чтобы заканчивать что-то вроде этого: Результат, который я ожидаю

, все, что у меня есть, это путь к моим файлам

View(texts)
V1
path/to/my/files/file1 path/to/my/files/file2 

Мой очень окончательный результат будет таким

Я открыт для любого решения этой

Спасибо!

Обновление

Вот рабочий процесс того, что я был неспособен сделать:

  1. чтение 700 текстовых файлов из каталога (те, простые текстовые файлы со строками, разделенными \ n)
  2. удаление повторяющихся строк I
  3. Импорт их в R. Это может быть вектор из одного столбца, в котором каждый текст является переменной.

Обновление 2

Мне удалось очистить тексты и получить их в списке:

str(teste)
List of 3
 $ : chr [1:205] "Hello " ...
 $ : chr [1:581] "hello little buns  ...
 $ : chr [1:849] "- Hello everybody," ...

Now My борьба состоит в том, чтобы свернуть каждый из элементов этого списка в одну строку вектора или фрейма данных Каждый из них представляет собой отдельный текст, разбитый на векторные линии. Мне нужно, чтобы каждый из них был одним вектором.

Ответы [ 2 ]

0 голосов
/ 25 января 2020

Спасибо за помощь. Мне удалось разобраться в проблеме с помощью следующей функции:

files <- list.files(path="path/to/you/files", pattern="*.txt", full.names=TRUE)
import.and.clean <- function(myfiles){
  tmp <- lapply(myfiles, read_lines)
  tmp2 <- purrr::map(tmp, unique)
  tmp3 <- purrr::map_chr(tmp2, paste0, collapse = "\n")
  return(tmp3)
}
my.vector <- import.and.clean(files)
0 голосов
/ 24 января 2020

Из вашего обновления 2 вы сможете просто отобразить и вставить:

purrr::map_chr(teste, paste0, collapse = "\n")

Затем вы можете объединить это с метаданными:

fileMetadata %>%
   mutate(interviewText = purrr::map_chr(teste, paste0, collapse = "\n"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...