You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言生成特定区域推文时遇vapply错误求助

问题解决:search_tweets的location参数报错处理

错误原因

search_tweets函数的location参数不支持传入多个地点的字符向量,它仅接受两种输入:

  • 单个地点名称(比如"Lagos")
  • 长度为4的经纬度边界向量(格式:c(西南经度, 西南纬度, 东北经度, 东北纬度))

你传入了长度为6的州名向量,导致内部编码函数vapply处理时出现长度不匹配的错误,也就是你看到的FUN(X[[5]]) result is length 6。

解决方法

方法1:循环遍历每个州,分别抓取推文后合并

通过循环逐个处理每个州,再把结果合并成一个数据框:

token <- create_token(consumer_key = "1234", consumer_secret = "1234", access_token = "1234", access_secret = "1234")

states_a <- c("ondo", "ekiti", "ogun", "lagos", "osun", "oyo")
unemployment_tweets_list <- list()

# 循环遍历每个州
for (state in states_a) {
  # 每个州单独抓取推文
  tweets <- search_tweets(q = "#unemployment", 
                          location = state, 
                          n = 2000,
                          lang = "en",
                          include_rts = FALSE)
  # 把结果存入列表
  unemployment_tweets_list[[state]] <- tweets
}

# 合并所有州的推文
unemployment_tweets_a <- dplyr::bind_rows(unemployment_tweets_list)

方法2:使用合并的地理边界(适用于相邻区域)

如果这些州属于同一地理区块(比如尼日利亚西南地区),可以先获取整个区域的经纬度边界,用这个边界作为location参数:

# 假设尼日利亚西南地区的大致边界(可根据实际需求调整)
sw_ng <- c(2.6, 6.2, 5.6, 8.5)
unemployment_tweets_a <- search_tweets(q = "#unemployment", 
                                      location = sw_ng, 
                                      n = 2000,
                                      lang = "en",
                                      include_rts = FALSE)

注意事项

  • Twitter API有请求频率限制,循环抓取时如果出现限流错误,可以添加Sys.sleep(10)这类延迟语句。
  • search_tweets的n参数是单次请求的最大推文数,循环时如果需要每个州都抓取2000条,保持当前设置即可;如果是总共2000条,要调整单条请求的数量。

内容的提问来源于stack exchange,提问作者Olufemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:40:24