循环遍历值的函数
Function to loop through values
我正在尝试在网站中执行多项搜索,但很难设计一个函数来插入不同的值并将结果转换为数据框
下面是我想出的一组命令,但它只对个人搜索有帮助
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 中是否有一个函数可以为名字和姓氏插入不同的值,运行 命令集,最后将所有结果存储在一个数据框中。
谢谢
通常,您可以使用 Map
或 mapply
将您的函数应用到 data.frame 列的相应元素。结果以 data.frame 的列表形式返回。然后,您可以将它们行绑定(使用 plyr::rbind.fill
或 data.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))
我正在尝试在网站中执行多项搜索,但很难设计一个函数来插入不同的值并将结果转换为数据框
下面是我想出的一组命令,但它只对个人搜索有帮助
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 中是否有一个函数可以为名字和姓氏插入不同的值,运行 命令集,最后将所有结果存储在一个数据框中。
谢谢
通常,您可以使用 Map
或 mapply
将您的函数应用到 data.frame 列的相应元素。结果以 data.frame 的列表形式返回。然后,您可以将它们行绑定(使用 plyr::rbind.fill
或 data.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))