2017-04-20 89 views
0

我想在网站上进行多次搜寻,并具有设计功能不同的值,以插件并将结果转换成数据帧功能通过值

低于

很难循环是一组命令我想出了,但它不仅有利于个人的搜索

fn = 'HARVEY' 

ln = 'ADELSON' 

mydf = data.frame(fn,ln); 




    root = 'https://npiregistry.cms.hhs.gov/' 


    u = paste(root,'registry/search-results-table?','first_name=', mydf$fn, '&last_name=', 
      mydf$ln, sep = ""); 

      # encode url correctly 

      zero <- httr::GET(u); 
    tables <- rvest::html_table(content(zero)); 


tab<-as.data.frame(tables) 

有没有在为r的功能,将插件不同的值,第一个和最后一个名称,然后运行命令集,最后储存在所有的结果单个数据帧。

感谢

回答

1

一般地,你可以使用Mapmapply以应用功能相对应的data.frame的列的元素。结果作为data.frames列表返回。然后,您可以排将它们绑定(使用plyr::rbind.filldata.table::rbindlist)以创建单个data.frame

library(httr) 
library(rvest) 

fn <- c('HARVEY', "Dollar") 
ln <- c('ADELSON', "Vora") 
mydf <- data.frame(FirstName=fn, LastName=ln); 
root <- 'https://npiregistry.cms.hhs.gov/' 

#you can use data.table::rbindlist or plyr::rbind.fill to row bind a list of data.frames 
as.data.frame(data.table::rbindlist(Map(function(fn, ln) { 
    u <- paste0(root,'registry/search-results-table?', 
     'first_name=', fn, '&last_name=', ln) 
    zero <- GET(u) 
    tables <- html_table(content(zero)) 

    as.data.frame(tables) 
}, mydf$FirstName, mydf$LastName), fill=TRUE))