Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 循环通过API并将结果放入单个data.frame中_Json_R_Api - Fatal编程技术网

Json 循环通过API并将结果放入单个data.frame中

Json 循环通过API并将结果放入单个data.frame中,json,r,api,Json,R,Api,我有一个唯一对象ID的列表,我想通过API循环。目标是获得包含所有对象和获得的结果的单个data.frame 这样我就得到了唯一对象的列表 url <- "http://mapakriminality.cz/api/" path <- "api/areas/?level=3" raw.result_codes <- GET(url = url, path = path) this.raw.content_codes <- rawToC

我有一个唯一对象ID的列表,我想通过API循环。目标是获得包含所有对象和获得的结果的单个data.frame

这样我就得到了唯一对象的列表

    url  <- "http://mapakriminality.cz/api/"
    path <- "api/areas/?level=3"

    raw.result_codes <- GET(url = url, path = path)

    this.raw.content_codes <- rawToChar(raw.result_codes$content)

    this.content_codes <- fromJSON(this.raw.content_codes)

    this.content_codes_df <- as.data.frame(this.content_codes)

    this.content_codes_df <- this.content_codes_df[- c(523,
    524,
    525),]

    this.content_codes_list <- list(this.content_codes_df[,1])
我想要的是这样的结果:

  crimes.CrimeRate crimes.Found crimes.Solved
1         235.1567          604           449
  crimes.CrimeRate crimes.Found crimes.Solved    object_ID
1         235.1567          604           449    19091
2         X2                Y2            Z2     W2
3         X3                Y3            Z3     W3

如果我正确理解了您想要做的事情,下面是一个基于您的代码的简单循环,用于迭代不同的区号,下载数据并更新数据帧。这不是最有效的方法,但解决方案简单易懂:

this.content_codes_list <- this.content_codes_df[,1]
url2  <- "http://mapakriminality.cz/api/"

this.content_crimes_df <- data.frame(crimes.Crime=rep(0,length(this.content_codes_list)),
                                     Rate.crimes.Found=rep(0,length(this.content_codes_list)),
                                     crimes.Solved=rep(0,length(this.content_codes_list)),
                                     object_ID=this.content_codes_list)

for (i in 1:length(this.content_codes_list)){
  print(i) #optional 
  path2 <- paste0("api/crimes?areacode=", 
                  this.content_codes_list[i],
                  "&crimetypes=101-903&timefrom=1-2014$&timeto=12-2014&groupby=area")
  raw.result_crimes <- GET(url = url2, path = path2)
  this.raw.content_crimes <- rawToChar(raw.result_crimes$content)
  this.content_crimes <- fromJSON(this.raw.content_crimes)
  this.content_crimes_df[i,1:3] <- as.data.frame(this.content_crimes)
}
this.content_codes_list <- this.content_codes_df[,1]
url2  <- "http://mapakriminality.cz/api/"

this.content_crimes_df <- data.frame(crimes.Crime=rep(0,length(this.content_codes_list)),
                                     Rate.crimes.Found=rep(0,length(this.content_codes_list)),
                                     crimes.Solved=rep(0,length(this.content_codes_list)),
                                     object_ID=this.content_codes_list)

for (i in 1:length(this.content_codes_list)){
  print(i) #optional 
  path2 <- paste0("api/crimes?areacode=", 
                  this.content_codes_list[i],
                  "&crimetypes=101-903&timefrom=1-2014$&timeto=12-2014&groupby=area")
  raw.result_crimes <- GET(url = url2, path = path2)
  this.raw.content_crimes <- rawToChar(raw.result_crimes$content)
  this.content_crimes <- fromJSON(this.raw.content_crimes)
  this.content_crimes_df[i,1:3] <- as.data.frame(this.content_crimes)
}
for (i in 1:length(this.content_codes_list)){
  print(i) #optional 
  path2 <- paste0("api/crimes?areacode=", 
                  this.content_codes_list[i],
                  "&crimetypes=101-903&timefrom=1-2014$&timeto=12-2014&groupby=area")
  raw.result_crimes <- GET(url = url2, path = path2)
  this.raw.content_crimes <- rawToChar(raw.result_crimes$content)
  this.content_crimes <- fromJSON(this.raw.content_crimes)
  output.df <- as.data.frame(this.content_crimes)
  if (nrow(output.df)!=0){
    output.df$object_ID <- this.content_codes_list[i]
    if (i==1){
      this.content_crimes_df <- output.df
    }else{
      this.content_crimes_df <- rbind.data.frame(this.content_crimes_df, output.df)
    }
  }
}
this.content_crimes_df

    crimes.CrimeRate crimes.Found crimes.Solved object_ID
1          8239.2655         3051           587    001110
2          2012.8364         2603           626    001111
3          2322.2749         1176           202    001112
4          3462.3317         2854           882    001114
5           268.7800          970           323    001115
6           422.5964         1556           414    001116
7           269.8192          679           241    001117
...