R 将API调用转换为数据帧时出现的问题

R 将API调用转换为数据帧时出现的问题,r,api,dataframe,rjson,R,Api,Dataframe,Rjson,我想从comtrade数据库的API调用中创建一个数据帧。 comtrade数据库在其一侧提供此代码。但是,为我的参数修改它并不会产生所希望的结果 代码如下所示: library("rjson") string <- get.Comtrade(px = "HS", ps = "2002" , p = "124" , r = "842" , fmt = "json") reporters <- fromJSON(file = string) reporters <- as.dat

我想从comtrade数据库的API调用中创建一个数据帧。 comtrade数据库在其一侧提供此代码。但是,为我的参数修改它并不会产生所希望的结果

代码如下所示:

library("rjson")
string <- get.Comtrade(px = "HS", ps = "2002" , p = "124" , r = "842" , fmt = "json")
reporters <- fromJSON(file = string)
reporters <- as.data.frame(t(sapply(reporters$results,rbind)))

get.Comtrade <- function(url = "http://comtrade.un.org/api/get?"
                         ,maxrec = 50000
                         ,type = "C"
                         ,freq = "A"
                         ,px = "HS"
                         ,ps = "now"
                         ,r = ""
                         ,p = ""
                         ,rg = "all"
                         ,cc = "TOTAL"
                         ,fmt = "json") {
  string <- paste(
    url
    ,"max=",maxrec,"&" #maximum no. of records returned
    ,"type=",type,"&" #type of trade (c=commodities)
    ,"freq=",freq,"&" #frequency
    ,"px=",px,"&" #classification
    ,"ps=",ps,"&" #time period
    ,"r=",r,"&" #reporting area
    ,"p=",p,"&" #partner country
    ,"rg=",rg,"&" #trade flow
    ,"cc=",cc,"&" #classification code
    ,"fmt=",fmt        #Format
    ,sep = ""
  )

  if (fmt == "csv") {
    raw.data <- read.csv(string,header = TRUE)
    return(list(validation = NULL, data = raw.data))
  } else {
    if (fmt == "json") {
      raw.data <- fromJSON(file = string)
      data <- raw.data$dataset
      validation <- unlist(raw.data$validation, recursive = TRUE)
      ndata <- NULL
      if (length(data) > 0) {
        var.names <- names(data[[1]])
        data <- as.data.frame(t(sapply(data,rbind)))
        ndata <- NULL
        for (i in 1:ncol(data)) {
          data[sapply(data[,i],is.null),i] <- NA
          ndata <- cbind(ndata, unlist(data[,i]))
        }
        ndata <- as.data.frame(ndata)
        colnames(ndata) <- var.names
      }
      return(list(validation = validation,data = ndata))
    }
  }
}
任何类型的帮助都会被推荐并受到良好的业力的尊重


向您致意,Sara

我认为字符串应指定为:

    string <- "http://comtrade.un.org/data/cache/reporterAreas.json"

string我认为应该将字符串指定为:

    string <- "http://comtrade.un.org/data/cache/reporterAreas.json"

string
string实际上,我从Comtrade方面复制了这个,并相信它能工作。你知道如何解决我的问题吗?你是复制了整个脚本还是只复制了函数?绝对不知道,对不起。希望你不是在要求
数据如果你一眼就没想到基本的作业,那么在进一步尝试之前,先读一本R教程,否则你很快就会撞到墙上。
string好吧,我实际上是从Comtrade方面复制了这本书,并相信它会起作用。你知道如何解决我的问题吗?你是复制了整个脚本还是只复制了函数?绝对不知道,对不起。希望你不是在要求
数据,如果你第一眼没想到基本的作业,那么在尝试进一步学习之前,先阅读R教程,否则你很快就会把头撞到墙上。
    string <- "http://comtrade.un.org/data/cache/reporterAreas.json"
    data<-get.Comtrade(px = "HS", ps = "2002" , p = "124" , r = "842" , fmt = "json")