Прочитать несколько файлов * .rtf в r - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть папка с более чем 2000 документов RTF.Я хочу импортировать их в r (предпочтительно в фрейм данных, который можно использовать в сочетании с пакетом tidytext ).Кроме того, мне нужен дополнительный столбец, добавляющий имя файла, чтобы я мог связать содержимое каждого документа RTF с именем файла (позже мне также придется извлечь информацию из имени файла и сохранить ее в отдельных столбцах моего набора данных).,

Я нашел решение от Jens Leerssen , которое я пытался адаптировать к моим требованиям:

require(textreadr)

read_plus <- function(flnm) {
read_rtf(flnm) %>% 
    mutate(filename = flnm)
}

tbl_with_sources <-
    list.files(path= "./data", pattern = "*.rtf", 
           full.names = TRUE) %>% 
map_df(~read_plus(.))

Однако я получаю следующее сообщение об ошибке:

Ошибка в UseMethod ("mutate_"): нет применимого метода для 'mutate_', примененного к объекту класса "персонаж"

Может кто-нибудь сказать мне, почему эта ошибка возникает, или предложитьдругое решение моей проблемы?

1 Ответ

0 голосов
/ 25 апреля 2018

Я наконец-то решил проблему с некоторым обходным путем.

1) Я преобразовал файлы * .rft в файлы * .txt с помощью команды textutil в терминале MacOSX:

find . -name \*.rtf -print0 | xargs -0 textutil -convert txt

Этим я избавляюсь и от форматирования.

2) Затем я использовал функцию read_plus Йенса Леррссена. Однако теперь я использую read.delim вместо read_rtf и включил две опции (stringsAsFactors и quote), чтобы избавиться от предупреждений и / или ошибок:

read_plus <- function(flnm) {
    read.delim(flnm, header = FALSE, stringsAsFactors = FALSE, quote = "") %>% 
            mutate(filename = flnm)
}

3) Наконец, я прочитал все файлы * .txt и переименовал столбец n V1 в конце.

df <- list.files(path = "./data", pattern = "*.txt", 
               full.names = TRUE) %>% 
    map_df(~read_plus(.)) %>%
    rename(paragraph = V1)
...