从JSON查询中执行多个操作(jsonlite)

时间:2018-02-06 14:19:07

标签: r jsonlite

我是新手R用户,找不到任何我能理解的答案。

我的目标是从URL检索信息,然后将信息转换为数据框供使用。

install.packages("jsonlite")

library(jsonlite)

fromJSON("https://developers.onemap.sg/commonapi/search?searchVal=revenue&returnGeom=Y&getAddrDetails=Y&pageNum=1)") 
#it works

x1 <- as.character("https://developers.onemap.sg/commonapi/search?searchVal=revenue&returnGeom=Y&getAddrDetails=Y&pageNum=1)")

fromJSON(x1) #also works

fromJSON(paste("x",1,sep=""))

=> Error: lexical error: invalid char in json text.    

我哪里出错了?我确认粘贴(“x”,1,sep ==“”)相当于“x1”,所以不应该有效吗?

无论如何,我实际上计划在数据框中放置一个邮政编码列表来替换每个searchVal =以生成一个URL列表,为每个URL获取一个数据框,然后将它们合并在一起。但鉴于我面对的困难,我想我会尝试从上面的第一个获得帮助。

提前多多感谢!

2 个答案:

答案 0 :(得分:1)

我认为你正在尝试使用字符串作为变量,在当前设置中R知道x1然而'x1'只是一个字符串。我希望有人能够更好地解释。所以你需要使用。的 EVAL

fromJSON(eval(parse(text=paste('x',1,sep=''))))

答案 1 :(得分:0)

您正在尝试将字符串用作变量。这些是完全不同的数据类型。

看那里:https://www.statmethods.net/input/datatypes.html

字符串是字符向量所以当你做

paste("x",1,sep="")
你正在获得角色矢量“x1”

然而当你这样做的时候(顺便说一句,我最后为你纠正了“和”)

x1 <- as.character("https://developers.onemap.sg/commonapi/search?searchVal=revenue&returnGeom=Y&getAddrDetails=Y&pageNum=1")

你得到的变量x1包含字符串形式的url。你可以在其他地方使用它。

另一个例子:

region <- "10000032"
url <- paste("https://esi.tech.ccp.is/latest/markets/", region, "/orders/?order_type=sell&page=1", sep="")

应该为您提供包含字符向量“https://esi.tech.ccp.is/latest/markets/10000032/orders/?order_type=sell&page=1

的变量网址

然后您可以使用以下命令将其从json解析为数据框:

df <- fromJSON(url)