RJSONIO и служба геокодирования Google для геокодирования в R - некоторые незначительные проблемы - PullRequest
0 голосов
/ 19 января 2012

Это очень простой пример геокодирования.Однако этот код при запуске выдает предупреждения и data.json пуст -

data.json <- fromJSON(paste(readLines(url("http://maps.google.com/maps/api/geocode/json?sensor=false&address=india"))))

Предупреждающие сообщения: 1: In if (is.na (encoding)) return (0L): условиеимеет длину> 1, и будет использоваться только первый элемент

2: In if (is.na (i)) {: условие имеет длину> 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 завершен.

1 Ответ

0 голосов
/ 19 января 2012

В первом случае вы передаете вектор строк (по одной строке для каждой строки) в функцию fromJSON, которая ожидает одну строку. Он пытается обработать первый элемент, который не является полным сообщением JSON: он не работает, и есть несколько предупреждений.

Во втором случае вы объединяете эти строки в одну строку, и все работает как положено.

...