如何从列表中创建数据框?
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(.))
这种方法将每个观察的输出展平,并将每个观察的输出映射到数据帧行。
我正在使用来自维基百科页面的信息创建数据框。准确地说是 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(.))
这种方法将每个观察的输出展平,并将每个观察的输出映射到数据帧行。