使用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
相关产品推荐
相关产品推荐

