如何用R的TwitteR包筛选美国全境的推文?
获取美国全境推文的可行方案
要覆盖整个美国全境的推文,其实可以通过以下两种思路来实现,毕竟searchTwitter()的geocode参数需要具体的经纬度+半径组合,咱们得灵活调整:
方案一:覆盖美国本土的单范围搜索
美国大陆的地理中心大概在北纬39.8283°,西经98.5795°,你可以设置一个足够大的半径来覆盖本土所有区域。经过测算,1500英里(mi)的半径基本能覆盖美国本土的绝大多数地区,对应的geocode参数写法如下:
library(twitteR) # 假设你已经完成了OAuth认证 us_tweets <- searchTwitter(q = "", geocode = '39.8283,-98.5795,1500mi', n = 1000)
注意:这个范围没办法覆盖阿拉斯加和夏威夷,因为它们和本土距离太远,如果需要包含这两个地区,建议用方案二。
方案二:分区域搜索后合并结果
如果要完整覆盖美国所有领土(包括阿拉斯加、夏威夷),可以分三次搜索,再合并去重结果:
- 美国本土:用方案一的地理中心和半径
- 阿拉斯加:地理中心大概在北纬61.3850°,西经152.2683°,设置500英里半径
- 夏威夷:地理中心大概在北纬20.7984°,西经156.3319°,设置200英里半径
对应的代码示例:
# 搜索本土推文 us_mainland <- searchTwitter(q = "", geocode = '39.8283,-98.5795,1500mi', n = 1000) # 搜索阿拉斯加推文 alaska <- searchTwitter(q = "", geocode = '61.3850,-152.2683,500mi', n = 200) # 搜索夏威夷推文 hawaii <- searchTwitter(q = "", geocode = '20.7984,-156.3319,200mi', n = 200) # 合并所有推文并去重(根据推文ID) all_us_tweets <- c(us_mainland, alaska, hawaii) unique_us_tweets <- unique(all_us_tweets)
额外注意事项
- Twitter的API有搜索数量限制,
n参数设置的数值不一定能完全返回,实际返回量取决于符合条件的推文数量和API限制。 - 如果需要搜索特定关键词的美国推文,把
q参数设置为对应的关键词即可,比如q = "climate change"。 - 确保你已经完成了TwitteR包的OAuth认证,否则无法调用API。
内容的提问来源于stack exchange,提问作者Laura Ataraxia
相关产品推荐
相关产品推荐

