将行添加到for循环中的dataframe中

时间:2017-02-02 14:25:40

标签: r dataframe

从本质上讲,我是在2016年从API中提取每月的数据,并将生成的JSON转换为数据帧。因此,我遍历一个月的数组,这些数组附加到API调用的URL字符串中。 这是我的代码: dates = c(“2015-12”,“2016-01”,“2016-02”,“2016-03”,“2016-04”,“2016-05”,“2016-06”,“2016-07” “,”2016-08“,”2016-09“,”2016-10“,”2016-11“) for(月份日期){     url = sprintf(“https://data.police.uk/api/crimes-street/all-crime?poly=53.5803,-2.6882:53.5803,-2.6882:53.2307,-3.2389:53.2307,-3.2389&date= %s“,月份)     r< - httr :: GET(url)     json< - httr :: content(r,“text”)     document< - jsonlite :: fromJSON(txt = json) } 我试图做的是在循环中使用rbind追加每次迭代,但结果数据帧总是空的。 我的问题是:在这个for循环中,我将如何迭代每个月并将fromJSON函数生成的每个数据帧相互附加到主数据帧中? 谢谢, 山姆

1 个答案:

答案 0 :(得分:2)

不要在循环中增长对象,特别是不是data.frame。那非常慢。将它们放入列表并一步rbind

res <- lapply(dates, function(month) {
  url = sprintf("https://data.police.uk/api/crimes-street/all-crime?poly=53.5803,-2.6882:53.5803,-2.6882:53.2307,-3.2389:53.2307,-3.2389&date=%s", month)
  r <- GET(url)
  json <- content(r, "text")

  fromJSON(txt=json)
  })

do.call(rbind, res)