如何从列表中创建数据框?

How to make dataframe out of lists?

我正在使用来自维基百科页面的信息创建数据框。准确地说是 1905 年的维基百科页面。我在数据框 portalAcadie_titles 下将以下函数与我拥有的页面标题列表一起使用。

以下是我要从中提取信息的一些标题:

"第十届阿卡迪亚国民大会", "第十一届阿卡迪亚国民大会", 《第十二届阿卡迪亚国民大会》、《第十三届阿卡迪亚国民大会》、 《第14届阿卡迪亚国民大会》、《第15届阿卡迪亚国民大会》、 《16th Acadian National Convention》、《1755(群)》、《1st Acadian National Convention》、 “第2届阿卡迪亚全国大会”、“第33届阿卡迪亚运动会决赛”、 “第三届阿卡迪亚国民大会”、“第四届阿卡迪亚国民大会”、 “第五届阿卡迪亚国民大会”、“第六届阿卡迪亚国民大会”、 《第七届阿卡迪亚国民大会》、《第八届阿卡迪亚国民大会》、 “第九届阿卡迪亚国民大会”,"Abbé Lanteigne","Abel Leblanc", "Aberdeen (Nouvelle-Écosse", "Aboiteau", "Abrams-Village"

查看下面的代码:

library(WikipediR)
pageInfo_fun <- function(portalAcadie_titles){
  page_info(language = "fr", 
            project = "wikipedia", 
            page = portalAcadie_titles,
            properties = c("url"),
            clean_response = T, Sys.sleep(0.0001))}

pageInfo_data <- apply(portalAcadie_titles,1, pageInfo_fun)

我正在尝试将其放入数据框,每个观察结果都是一个页面,其属性作为变量。但它在所有页面的列表中为我提供了每个页面的特征列表。

一个

pageInfo_df <- data.frame(pageInfo_data)

给我 1 个并排显示所有特征的观察结果。我有 1 个观测值,包含 24,773 个变量。

我的问题是:如何将每个页面作为一个观察,以特征作为变量?

pageInfo_fun 目前 return 是一个嵌套列表,如果您将函数转换为 return 数据框,那么您可以对每个页面使用 lapply 并且 rbind 它们一起形成一个数据框。

library(WikipediR)

pageInfo_fun <- function(portalAcadie_titles){
  as.data.frame(page_info(language = "fr", 
         project = "wikipedia", 
         page = portalAcadie_titles,
         properties = c("url"),
         clean_response = T, Sys.sleep(0.0001)))
}

x <- c("10e Convention nationale acadienne", "11e Convention nationale acadienne")
do.call(rbind, lapply(x, pageInfo_fun))

Tidyverse purrr 包可用于生成所需的输出:

map_dfr(pageInfo_data, ~flatten(.))

这种方法将每个观察的输出展平,并将每个观察的输出映射到数据帧行。