如何通过for循环附加数据

时间:2014-11-16 21:48:23

标签: json r loops rjsonio jsonlite

我试图通过循环递归收集数据。我写了这个命令,它适用于从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]))

2 个答案:

答案 0 :(得分:0)

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

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='')))
}

答案 1 :(得分:0)

循环将比apply慢得多。请参阅lapplysapplypaste0只是连接两个字符串。

GetJSON = function(id_)
{
    return(fromJSON(paste0("https://www.example.com/?page=", id_), flatten = TRUE))
}
lapply(1:300, GetJSON)