问题
I'm a newbie R user and couldn't find any answers which I could understand.
My objective is to retrieve information from a URL and then convert the information into a data frame for use.
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.
Where did I go wrong? I verified that paste("x",1,sep=="") is equivalent to "x1", so shouldn't it work?
In any case, I was actually planning to put a list of postal codes in a data frame to replace each searchVal= to generate a list of URLs, get a data frame for each URL then merge them all together. But given the difficult I face above, I guess I will try to get help from the above first.
Thanks a lot in advance!
回答1:
I think you are trying to use a string as a variable, in current set up R knows x1 however 'x1' is nothing but just a string. I hope someone might be able to explain better. So you need to use. eval.
fromJSON(eval(parse(text=paste('x',1,sep=''))))
回答2:
you're trying to use string as variable. these are completely different data types.
see there: https://www.statmethods.net/input/datatypes.html
string is character vector so when you do
paste("x",1,sep="")
you're getting character vector "x1"
whereas when you do (btw I corrected " and ) for you at the end)
x1 <- as.character("https://developers.onemap.sg/commonapi/search?searchVal=revenue&returnGeom=Y&getAddrDetails=Y&pageNum=1")
you're getting variable x1 that contains url in form of a string. you can use it somewhere else.
another example:
region <- "10000032"
url <- paste("https://esi.tech.ccp.is/latest/markets/", region, "/orders/?order_type=sell&page=1", sep="")
should give you variable url which contains character vector "https://esi.tech.ccp.is/latest/markets/10000032/orders/?order_type=sell&page=1"
then you could parse it from json to data frame with:
df <- fromJSON(url)
来源:https://stackoverflow.com/questions/48645140/doing-multiple-fromjson-queries-jsonlite