4

我已经安装了 rtweet,当我想从美国以外的特定国家收集推文时,该软件包不会收集任何数据。我已经使用来自 Google 的相同 API 密钥作为 R 中的环境变量安装了Geocoding APIMaps JavaScript APIGeolocation API 。以下是我遵循的步骤:

生成 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=/Users/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_Mexico <- search_tweets("#lang:es",
                           geocode = lookup_coords("mexico",apikey = "google_maps_token"),
                n=10, include_rts = FALSE)

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

没有从墨西哥收集数据

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

从美国获取坐标

usa <- lookup_coords("usa")

美国坐标

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

从巴西获取坐标

bz <- lookup_coords("brazil")

没有来自巴西的坐标

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

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

墨西哥坐标

我做错了什么还是需要在另一个目录中安装 API 密钥?我不得不说我的工作目录(我保存我的项目和脚本的地方)与运行 path.expand("~/") 后出现的主目录不同

4

1 回答 1

3

我找到了让 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)
于 2018-06-30T01:59:15.433 回答