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

使用rtweet的search_30day获取推文后,无法转换为DataFrame求助

问题:rtweet中search_30day数据转DataFrame失败

我使用rtweet包的search_30day函数提取了2022-09-15至昨日的推文,代码如下:

install.packages("rtweet")
remotes::install_github("ropensci/rtweet@devel")
library("remotes")
library("rtweet")

consumer_key <- ""
consumer_secret <- ""
access_token <- ""
access_secret <- ""
app <- ""

token = rtweet::create_token(app,consumer_key,consumer_secret,access_token,access_secret)
auth_get()
dataBTC1 <- search_30day("Bitcoin analysis", n = 100, env_name = "Tweets30", fromDate = "20220915000", toDate = "202209152359", parse = FALSE)

因rtweet包需更新,我设置了parse=FALSE。但调用btc.df <- twListToDF(dataBTC1)时出现报错:

Error in twListToDF(dataBTC1) : 
Elements of twList are not of an appropriate class

我尝试过as.data.frame()也无效,查询dataBTC1的类显示为dataframe,请问该如何将其转换为可用的DataFrame?


解决方法
  • 查看数据结构
    先运行str(dataBTC1)查看dataBTC1的内部结构,通常Twitter API的原始响应会包含statuses字段,这才是存储推文数据的核心部分。

  • 提取推文列表并转换
    如果dataBTC1中存在statuses字段,直接提取该部分再用twListToDF处理:

    # 提取推文列表
    tweet_list <- dataBTC1$statuses
    # 转换为标准DataFrame
    btc.df <- twListToDF(tweet_list)
    
  • 直接处理嵌套DataFrame
    如果statuses本身已经是DataFrame格式,可直接使用,或借助dplyr优化结构并展开嵌套字段(比如用户信息、实体数据):

    library(dplyr)
    # 转换为 tibble 格式(更易处理嵌套数据)
    btc.df <- as_tibble(dataBTC1$statuses)
    # 展开用户信息字段,添加前缀避免列名重复
    btc.df <- btc.df %>% unnest_wider(user, names_sep = "_")
    
  • 手动解析原始响应(备选方案)
    若上述方法无效,可尝试重新解析API返回的原始JSON内容:

    library(jsonlite)
    # 解析原始JSON数据
    raw_tweet_data <- fromJSON(dataBTC1$raw)
    # 提取statuses并转为DataFrame
    btc.df <- as.data.frame(raw_tweet_data$statuses)
    

内容的提问来源于stack exchange,提问作者A. Jahanyar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:25:50