在R中传递用于查询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") 我不知道如何将多个地址传递给此函数 我试着这

我正在尝试从R中的API获取数据

我使用的API是数据科学工具包的street2coordinates

基本上,这个API返回街道地址的坐标。我试过使用它,当我只通过一个地址时,它就可以正常工作。 像这样:

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个。。。