在R中传递用于查询API的数据
我正在尝试从R中的API获取数据 我使用的API是数据科学工具包的street2coordinates 基本上,这个API返回街道地址的坐标。我试过使用它,当我只通过一个地址时,它就可以正常工作。 像这样:在R中传递用于查询API的数据,r,api,R,Api,我正在尝试从R中的API获取数据 我使用的API是数据科学工具包的street2coordinates 基本上,这个API返回街道地址的坐标。我试过使用它,当我只通过一个地址时,它就可以正常工作。 像这样: library(httr) GET("http://www.datasciencetoolkit.org/street2coordinates/2543+Graystone+Place%2c+Simi+Valley%2c+CA+93065") 我不知道如何将多个地址传递给此函数 我试着这
library(httr)
GET("http://www.datasciencetoolkit.org/street2coordinates/2543+Graystone+Place%2c+Simi+Valley%2c+CA+93065")
我不知道如何将多个地址传递给此函数
我试着这样做,但输出是我不明白的东西。这是一份奇怪的清单
addresses <- c("4600 Vegas Dr, Las Vegas, NV 89108","3600 Vegas Dr, Las Vegas, NV 89108")
url <- GET("http://www.datasciencetoolkit.org/street2coordinates/addresses")
地址查看您的代码,您不能在GET
函数中将您的地址作为字符串直接传递,因为它会将其作为字符串读取,但实际上您的地址
是一个列表
如果要获取所有坐标,则简单循环即可:
library(httr)
addresses <- c("4600 Vegas Dr, Las Vegas, NV 89108","3600 Vegas Dr, Las Vegas, NV 89108")
for(i in (1:length(addresses))){
print(GET(paste("http://www.datasciencetoolkit.org/street2coordinates/",addresses[i])))
}
但在查询API时,您在地址中提供的地址仍然出错。因此,请检查您的地址
并运行上述代码。查看您的代码,您不能在GET
函数中直接将地址
作为字符串传递,因为它会将其作为字符串读取,但实际上您的地址
是一个列表
如果要获取所有坐标,则简单循环即可:
library(httr)
addresses <- c("4600 Vegas Dr, Las Vegas, NV 89108","3600 Vegas Dr, Las Vegas, NV 89108")
for(i in (1:length(addresses))){
print(GET(paste("http://www.datasciencetoolkit.org/street2coordinates/",addresses[i])))
}
但在查询API时,您在地址中提供的地址仍然出错。因此,请检查您的地址
并运行上述代码。您需要重新格式化您的地址,以便API可以读取它们
看起来他们用%2c+
替换逗号,用+
替换空格
library(httr)
library(tidyverse)
base_url <- "http://www.datasciencetoolkit.org/street2coordinates/"
look_up <- c("4600+Vegas+Dr%2c+Las+Vegas%2c+NV+89108", "3600+Vegas+Dr%2c+Las+Vegas%2c+NV+89108", "2543+Graystone+Place%2c+Simi+Valley%2c+CA+93065")
full_url <- map2_chr(base_url, look_up, paste0)
out <- map(full_url, GET) %>%
map_dfr(., ~ {
content(., as = 'parsed') %>%
unlist() %>%
enframe() %>%
extract(col = name, into = "key", regex = "([^.]*$)", remove = FALSE)
})
库(httr)
图书馆(tidyverse)
基本url%
提取(col=name,into=“key”,regex=“([^.]*$)”,remove=FALSE)
})
希望这有帮助 您需要重新格式化地址,以便API可以读取它们
看起来他们用%2c+
替换逗号,用+
替换空格
library(httr)
library(tidyverse)
base_url <- "http://www.datasciencetoolkit.org/street2coordinates/"
look_up <- c("4600+Vegas+Dr%2c+Las+Vegas%2c+NV+89108", "3600+Vegas+Dr%2c+Las+Vegas%2c+NV+89108", "2543+Graystone+Place%2c+Simi+Valley%2c+CA+93065")
full_url <- map2_chr(base_url, look_up, paste0)
out <- map(full_url, GET) %>%
map_dfr(., ~ {
content(., as = 'parsed') %>%
unlist() %>%
enframe() %>%
extract(col = name, into = "key", regex = "([^.]*$)", remove = FALSE)
})
库(httr)
图书馆(tidyverse)
基本url%
提取(col=name,into=“key”,regex=“([^.]*$)”,remove=FALSE)
})
希望这有帮助 你不明白的输出是什么?在您的GET
调用中,您没有包含任何可以插入地址列表的内容,您只是在查找地址“address”的坐标,这是行不通的,您不理解的输出是什么?在您的GET
调用中,您没有包含任何可以插入地址列表的内容。您只是查找地址“address”的坐标,这是行不通的。这里有几个问题。不太重要的是,您不需要for循环,因为R有内置的工具,如apply
族,用于迭代向量。现在您没有返回任何内容,只是打印HTTP响应。此外,您还会收到一些错误,这些错误表明您正在查找的地址是“
”。如果您的呼叫成功,您将有200个状态码,而不是500个。这里有几个问题。不太重要的是,您不需要for循环,因为R有内置的工具,如apply
族,用于迭代向量。现在您没有返回任何内容,只是打印HTTP响应。此外,您还会收到一些错误,这些错误表明您正在查找的地址是“
”。如果您的呼叫成功,您将有200个状态码,而不是500个。。。