长话短说我试图收集6500用户的信息,所以我写了一个循环。您可以在下面找到10位艺术家的例子。在这个循环中,我试图使用一个调用来收集用户所有轨道上的信息。
test <- fromJSON(getURL('http://api.soundcloud.com/users/52880864/tracks?client_id=0ab2657a7e5b63b6dbc778e13c834e3d&limit=200&offset=1&linked_partitioning=1'))
此简短示例显示了一个包含用户上传的所有曲目的数据框。当我使用我的循环时,我想将所有数据帧添加到一起,以便我可以使用tapply处理它们。这样我就可以看到所有曲目的总和是多少。但是,有两件事是错的。首先,当我运行循环时,每个用户只显示一个上传的曲目。其次,我认为我没有正确地组合数据帧。有人可以向我解释我做错了吗?
id <- c(20376298, 63320169, 3806325, 12231483, 18838035, 117385796, 52880864, 32704993, 63975320, 95667573)
Partition1 <- paste0("'http://api.soundcloud.com/users/", id, "/tracks?client_id=0ab2657a7e5b63b6dbc778e13c834e3d&limit=200&offset=1&linked_partitioning=1'")
results <- vector(mode = "list", length = length(Partition1))
for (i in seq_along(Partition1)){
message(paste0('Query #',i))
tryCatch({
result_i <- fromJSON((getURL(str_replace_all(Partition1[i],"'",""))))
clean_i <- function(x)ifelse(is.null(x),NA,ifelse(length(x)==0,NA,x))
results[[i]] <- plyr::llply(result_i, clean_i) %>% as_data_frame
if( i == 4 ) {
stop('stop')
}
}, error = function(e){
beepr::beep(1)
}
)
Sys.sleep(0.5)
}