0

我正在尝试通过循环递归地收集数据。我写了这个命令,它适用于从 2 页收集信息。例如,

library(jsonlite)   
data1 <- fromJSON("https://www.example.com/?page=1", flatten = TRUE)
data2 <- fromJSON("https://www.example.com/?page=2", flatten = TRUE)
filings<- rbind.pages(list(data1, data2))

我想知道我是否可以对 300 页递归执行此操作。让我知道任何建议。

library(jsonlite)
for (i in 1:300) {
datai <- fromJSON("https://www.example.com/?page=i", flatten = TRUE)
}
filings<- rbind.pages(list(data[1:300]))
4

2 回答 2

0

要在字符串中使用循环变量,您需要使用eval,parse和的这种令人不快的组合paste。这是一个简单的例子

for (i in 1:10){
    eval(parse(text=paste(
    'print ("iteration number ',i,'")'
    ,sep='')))
}

您的示例可能类似于

for (i in 1:300) {
eval(parse(text=paste(
'data_',i, '<- fromJSON("https://www.example.com/?page=',i,'", flatten = TRUE)'
,sep='')))
}
于 2014-11-16T23:31:23.043 回答
0

循环会慢得多apply。见lapplysapplypaste0只需连接两个字符串。

GetJSON = function(id_)
{
    return(fromJSON(paste0("https://www.example.com/?page=", id_), flatten = TRUE))
}
lapply(1:300, GetJSON)
于 2014-11-16T23:53:24.383 回答