将 Factiva-HTML 转换为 tidy-dataframe 的函数

Posted

技术标签:

【中文标题】将 Factiva-HTML 转换为 tidy-dataframe 的函数【英文标题】:Function turning Factiva-HTML into a tidy-dataframe 【发布时间】:2020-10-31 08:44:58 【问题描述】:

使用 tm.plugin.factiva-package 我想创建一个可以读取 Factiva-html 文件的函数,并将它们作为数据框返回。到目前为止,我已经设法创建了一个可以读取这些文件的函数,并将它们转换为数据帧列表,每个 df 对应一个 html 文件。但是,我很难找到一种将它们合并到一个 df 中的方法,因为 tidy() 函数将某些列作为列表而不是字符向量返回。使用bind_rows() f.ex。返回错误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]  ...

【问题讨论】:

【参考方案1】:

对于那些感兴趣的人来说,迟来的回应。 以下使用purrr::map 的代码应返回所需的小标题。

files_list <- list.files(Files_Path)
is_html_file <- str_extract(files_list, "\\w*\\.html")
html_files <- is_html_file[!is.na(is_html_file)] #Creates a list of all valid files in folder
html_files_path <- str_c(Files_Path, html_files)


html_files_path %>% 
  map(FactivaSource) %>% 
  map(Corpus, readerControl = list(language = NA)) %>% 
  map_dfr(tidy)

【讨论】:

以上是关于将 Factiva-HTML 转换为 tidy-dataframe 的函数的主要内容,如果未能解决你的问题,请参考以下文章

怎么用ABBYY将PDF转换为JPEG图像

将rowdatapacket转换为数组,如何将mysql node.js api rowdatapacket转换为数组,将字符串转换为数组

怎么用ABBYY将PDF转换为JPEG图像

如果将一个NSObject从NSDictionary转换为NSString?

如何将“false”转换为 0,将“true”转换为 1?

在php中将 1 转换为 001 ,将 2 转换为 002 等,将 99 转换为 099 等 [重复]