【发布时间】:2021-02-01 05:21:32
【问题描述】:
我正在尝试使用 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)
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
您好,欢迎您!你能写出
class(x)和str(x)的输出吗? -
谢谢。抱歉,我对 R 很陌生,所以请多多包涵。你想让喵喵在什么时候使用
class(x)' andstr(x)` -
在R中写入
class(x)和str(x),运行代码并告诉我们哪个是输出。 -
class(x)[1] "数字"str(x)num [1:100] 0.597 -0.323 -0.199 0.47 -0.335 ... -
好的,所以如果
x是数字,您需要将其称为x[1]而不是x[[1]],如果它是list而不是numeric,则应该是符号