我正在尝试使用R(https://www.datacamp.com/community/tutorials/exploring-h-1b-data-with-r#gs.V8vcRAc)
重新创建这个有效的网页抓取数据示例然而,当我执行代码行all.h1b<-pblapply(all.urls, main)
时
我进展到90%,然后收到错误消息:
x [[1]]中的错误:下标超出界限
完整代码是这样的:
library(jsonlite)
library(rvest)
library(pbapply)
library(data.table)
json.cities<-paste0('http://h1bdata.info/cities.php?term=', letters)
all.cities<-unlist(pblapply(json.cities,fromJSON))
city.year<-expand.grid(city=all.cities,yr=seq(2012,2016))
##city.year$city<-urltools::url_encode(as.character(city.year$city))
city.year$city <- lapply(as.character(city.year$city), URLencode , reserved = TRUE)
all.urls<-paste0('http://h1bdata.info/index.php?em=&job=&city=', city.year[,1],'&year=', city.year[,2])
main<-function(url.x){
x<-read_html(url.x)
x<-html_table(x)
x<-data.table(x[[1]])
return(x)
Sys.sleep(5)
}
##Sys.sleep(5)
all.h1b<-pblapply(all.urls, main)
任何帮助都将不胜感激。
由于
答案 0 :(得分:0)
通常,当您尝试从其边界访问数组时会出现此错误。 有时,当包版本不是最新版本或过于新颖时,也会发生这种情况。 我也在尝试代码,让我们看看它是否有效或是否有同样的问题。
尝试这些更改
library(jsonlite)
library(rvest)
library(pbapply)
library(data.table)
json.cities<-paste0('http://h1bdata.info/cities.php?term=', letters)
all.cities<-unlist(pblapply(json.cities,fromJSON))
city.year<-expand.grid(city=all.cities,yr=seq(2012,2016))
city.year$city<-urltools::url_encode(as.character(city.year$city))
city.year$city <- lapply(as.character(city.year$city), URLencode , reserved = TRUE)
all.urls<-paste0('http://h1bdata.info/index.php?em=&job=&city=', city.year[,1],'&year=', city.year[,2])
main<-function(url.x){
x<-read_html(url.x)
x<-html_table(x)
x<-data.table(x[1])
return(x)
Sys.sleep(5)
}
all.h1b<-pblapply(all.urls, main)
此代码应该可以使用!