使用rtweet包中的lookup_coords()函数获取国家/地区位置的坐标

时间:2018-06-29 20:07:06

标签: r twitter google-geocoding-api rtweet

我已经安装了rtweet,并且当我想从美国以外的特定国家/地区收集推文时,该软件包不收集任何数据。我已经安装了 Geocoding API Maps JavaScript API Geolocation API ,并使用了Google提供的相同API密钥作为R中的环境变量。这是我遵循的步骤:

生成一个Google maps_token

google_maps_token<-"my key XXXXXXXXXX"

主目录路径

home_directory <- path.expand("~/")

结合令牌名称

file_name <- file.path(home_directory, "google_maps_token.rds")

将令牌保存到主目录

saveRDS(google_maps_token, file = file_name)

创建环境变量

cat(paste0("GOOGLE_MAPS_PAT=", file_name),
file = file.path(home_directory, ".Renviron"),
append = TRUE)

可视化API密钥环境变量

usethis::edit_r_environ() 

TWITTER_PAT = / Users / xxxxxx / .rtweet_token1.rds GOOGLE_MAPS_PAT = /用户/xxxxxx//google_maps_token.rds

保存Google api密钥后,我重新启动RStudio以开始收集推文,并且发生了这种情况:

加载rtweet库

library(rtweet)

收集来自美国的推文

tweets_USA <- search_tweets("#lang:en",
                        geocode = lookup_coords("USA",apikey = "google_maps_token"),
                n=10, include_rts = FALSE)

正在搜索推文... 完成收集推文!

10 tweets from USA

收集来自墨西哥的推文

tweets_Mexico <- search_tweets("#lang:es",
                           geocode = lookup_coords("mexico",apikey = "google_maps_token"),
                n=10, include_rts = FALSE)

正在搜索推文... 完成收集推文!

no data collected from Mexico

此外,当我将rtweet包中的lookup_coords()函数与“ usa”一起使用时,它会起作用

从美国获取坐标

usa <- lookup_coords("usa")

coordinates from USA

但是当我尝试按照帮助部分中的示例使用其他地址时,它不会收集任何数据

从巴西获取坐标

bz <- lookup_coords("brazil")

no coordinates from Brazil

但是当我直接在函数中编写API密钥时,它就可以工作。 出于安全原因,我改写“ XXXXXXXXXX”

mexico_coord <- lookup_coords(address = "mexico",
                          components = "country:Mexico",
                          apikey = "XXXXXXXXXXXX") 

mexico coordinates

我做错了吗,还是需要将API密钥安装在另一个目录中?我不得不说,我的工作目录(用于保存项目和脚本的目录)与由于运行path.expand(“〜/”)

而出现的主目录不同。

1 个答案:

答案 0 :(得分:1)

我找到了使lookup_coords()函数正常工作的解决方案。 我只需要使用Sys.getenv()函数来调用google_maps_token.rds

使用墨西哥的坐标生成变量

mexico_coord <- lookup_coords(address = "mexico",
                          components = "country:Mexico",
                          apikey=Sys.getenv("google_maps_token.rds"))

然后,我可以使用search_tweet()函数从西班牙语收集来自墨西哥的10条推文

tuits_Mex_esp_10 <- search_tweets("lang:es",
                          geocode = mexico_coord, n = 10)