这是一个非常简单的地理编码示例。但是,此代码在运行时会抛出警告并且data.json为空 -
data.json <- fromJSON(paste(readLines(url("http://maps.google.com/maps/api/geocode/json?sensor=false&address=india"))))
警告消息:1:在if(is.na(encoding))中返回(0L):. 条件的长度> 1,只使用第一个元素
2:在if(is.na(i)){:条件有长度&gt; 1而且只有 将使用第一个元素
> length(data.json)
[1] 0
但是,当我更改代码并将readLines
块放在paste
块中时,它会起作用:
> data.json <- fromJSON(paste(readLines(url("http://maps.google.com/maps/api/geocode/json?sensor=false&address=india")), collapse=""))
> length(data.json)
[1] 2
这是为什么? paste(..., collapse="")
做了什么来摆脱警告和data.json完成。
答案 0 :(得分:0)
在第一种情况下,您将一个字符串向量(每行一个字符串)传递给fromJSON
函数,该函数需要一个字符串。它试图处理第一个元素,它不是一个完整的JSON消息:它不起作用,并且有一些警告。
在第二种情况下,您将这些行连接成一个字符串,并且按预期工作。