首页 > 解决方案 > 将向量上的函数调用的结果彼此附加到 r 中

问题描述

我有一个 1 列数据框,它的唯一列中有一系列 URL(可能是一个相同的向量)。为了这个示例,我们将保持每个 URL 相同:

urls<-as.data.frame(c("https://en.wikipedia.org/wiki/List_of_counties_in_California", "https://en.wikipedia.org/wiki/List_of_counties_in_California","https://en.wikipedia.org/wiki/List_of_counties_in_California"))
colnames(urls)<-"col1"
urls$col1<-as.character(urls$col1)

我还编写了一个从这些 url 中抓取表格的函数:

wiki_scrape <- function(x){
  x_url <- x %>%
    read_html() %>%
    html_nodes(xpath='//*[@id="mw-content-text"]/div/table[2]') %>%
    html_table() %>%
    .[[1]] %>%
    select(County)
  return(x_url) 
}

结果wiki_scrape(urls[1,1])是一个包含 58 个观测值的数据框。我想wiki_scrape在整个向量urls(而不仅仅是urls[1,1])上以迭代方式运行此函数,并将每个结果数据帧附加到前一个结果数据帧。在此示例中,urls列出了 3 个 url,因此我希望生成的数据帧长 174 个观察值(3*58 = 174,其中 58 是使用 抓取的一个数据帧的长度wiki_scrape)。

标签: rfunctionappend

解决方案


你可以做

library(dplyr)

map(urls$col1, wiki_scrape) %>% bind_rows() 

#            County
#1   Alameda County
#2    Alpine County
#3    Amador County
#4     Butte County
#5 Calaveras County
#6    Colusa County
#....

推荐阅读