追加对向量函数调用的结果r中彼此

问题描述 投票:0回答:2

我有一个系列在其仅有的一列URL的1列数据帧(可以是载体一样的)。对于这个例子的目的,我们将保持每个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)

我也有我写一个函数,擦伤从这些网址的表格:

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个网址所以想要我的所得数据帧是174个观测长(3 * 58 = 174 58是一个数据帧的长度使用wiki_scrape刮下)。

r function append
2个回答
1
投票

你可以这样做

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
#....

1
投票

我们可以从map_df使用purrr

library(purrr)
out <- map_df(urls$col1, wiki_scrape)
head(out)
#            County
#1   Alameda County
#2    Alpine County
#3    Amador County
#4     Butte County
#5 Calaveras County
#6    Colusa County
© www.soinside.com 2019 - 2024. All rights reserved.