Функция, превращающая Factiva- HTML в tidy-dataframe - PullRequest
0 голосов
/ 10 июля 2020

Используя пакет tm.plugin.factiva-package, я хочу создать функцию, которая может читать файлы Factiva- html и возвращать их как фрейм данных. Пока мне удалось создать функцию, которая может читать эти файлы и преобразовывать их в список фреймов данных, каждый df соответствует одному html -файлу. Однако мне сложно найти способ объединить их в один df, поскольку функция tidy() возвращает определенные столбцы в виде списка, а не вектора символов. Использование bind_rows() например. возвращает ошибку Error: Column `company` can't be converted from list to character. Теоретически все столбцы, в которых это проблема, могут быть удалены, поскольку они мне не нужны, однако я не могу найти способ сделать это для всего списка, учитывая, что, например, select() не может справиться списки (и я совсем новичок в их использовании).

Функция сейчас выглядит так:

Factiva_Reader <- function(File_Path){
pac <-  c("tidyverse", "tidytext", "tm", "tm.plugin.factiva")
sapply(pac, require, character.only = TRUE) #Loading required packages,
                                          

Filer <- list.files(File_Path)
Filer <- str_extract(Filer, "\\w*\\.html")
Filer <- Filer[!is.na(Filer)] #Creates a list of all valid files in folder

Data <- sapply(Filer, FactivaSource)
Data <- sapply(Data, Corpus, readerControl = list(language = NA))
Data <- lapply(Data, tidy)
}

Я был довольно неуверен в том, как отображать данные, так как Технически это защищено авторским правом, и в странном формате, однако, должно, по крайней мере, показывать структуру. Пока что функция возвращает список, содержащий df в этом формате для каждого файла в папке:

$ Factiva3.html: tibble [100 x 20] (S3: tbl_df/tbl/data.frame)
..$ author       : chr [1:100]  ...
..$ datetimestamp: POSIXct[1:100], format:  ...
..$ description  : logi [1:100] NULL ...
..$ heading      : chr [1:100]  ...
..$ id           : chr [1:100]  ...
..$ language     : chr [1:100]  ...
..$ origin       : chr [1:100]  ...
..$ edition      : chr [1:100]  ...
..$ section      : chr [1:100]  ...
..$ subject      :List of 100
..$ coverage     :List of 100
..$ company      : chr [1:100]  ...
..$ industry     :List of 100
..$ infocode     :List of 100
..$ infodesc     :List of 100
..$ page         : chr [1:100]  ...
..$ wordcount    : int [1:100] NULL ...
..$ publisher    : chr [1:100]  ...
..$ rights       : chr [1:100]  ...
..$ text         : Named chr [1:100]  ...
.. ..- attr(*, "names")= chr [1:100]  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...