【问题标题】:Function to loop through values循环遍历值的函数
【发布时间】:2017-04-20 23:14:54
【问题描述】:

我正在尝试在网站中执行多个搜索,并且很难设计一个函数来插入不同的值并将结果转换为数据框

下面是我想出的一组命令,但它只对个人搜索有帮助

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 中是否有一个函数可以为名字和姓氏插入不同的值并运行命令集,最后将所有结果存储在单个数据帧中。

谢谢

【问题讨论】:

    标签: r web-scraping rvest rcurl httr


    【解决方案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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-11
      • 2018-08-05
      相关资源
      最近更新 更多