首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Factiva-HTML转换为整洁数据帧的函数

将Factiva-HTML转换为整洁数据帧的函数
EN

Stack Overflow用户
提问于 2020-07-10 23:07:36
回答 1查看 89关注 0票数 0

使用tm.plugin.factiva-package,我想创建一个可以读取Factiva-html文件的函数,并将它们作为dataframe返回。到目前为止,我已经成功地创建了一个可以读取这些文件的函数,并将它们转换为一个数据帧列表,每个df对应一个html文件。但是,我很难找到将它们合并到一个df中的方法,因为tidy()函数以列表而不是字符向量的形式返回某些列。使用bind_rows() f.ex。返回错误Error: Column `company` can't be converted from list to character。从理论上讲,所有有问题的列都可以选择,因为我并不真正需要它们,但是我找不到一种方法来处理整个列表,比如select()不能处理列表(我自己对使用它们也很陌生)。

现在的函数如下所示:

代码语言:javascript
运行
复制
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的列表:

代码语言:javascript
运行
复制
$ 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]  ...
EN

回答 1

Stack Overflow用户

发布于 2021-04-29 19:20:03

对于那些感兴趣的人来说,这是一个很晚的回复。以下使用purrr::map的代码应该会返回所需的tibble。

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62837155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档