本地存储数据集下Corona高转发热门推文过滤问题求助
解决本地Twitter数据集筛选热门Corona推文的问题
看起来你混淆了线上搜索API函数和本地数据操作函数的用法,还可能踩了列名不匹配的坑,我帮你一步步理清:
1. 为什么search_tweets()会访问Twitter?
search_tweets()是rtweet包里专门用来调用Twitter API在线搜索推文的函数,它的设计目的就是从Twitter平台拉取数据,而非操作你本地已存储好的数据集。所以不管你加什么筛选参数,它都会尝试连接Twitter API——这是函数的正常行为,操作本地数据根本不该用这个函数。
2. 为什么filter()和top_n()没效果?
最常见的原因是本地数据集的列名和你写的不匹配:
rtweet包默认获取的推文数据里,转发量的列名是retweet_count(下划线分隔),而非你写的retweetCount(驼峰式);点赞量对应的是favorite_count,不是faves或其他名称。- 另外要确认你真的正确加载了本地数据集:比如之前用
saveRDS()保存的,得先用readRDS()读进来,不然tweets对象可能是空的或者根本不存在。
正确的本地数据筛选步骤
第一步:确认本地数据的列名
先运行这个命令查看所有列名,找到转发量和点赞量对应的字段:
colnames(tweets)
你应该能看到类似retweet_count、favorite_count这样的列。
第二步:筛选符合条件的热门推文
假设你的本地数据集已经正确加载为tweets对象,列名是rtweet默认格式:
- 筛选转发量≥100且点赞量≥100的推文:
library(dplyr) tweets_pop <- tweets %>% filter(retweet_count >= 100 & favorite_count >= 100) - 取转发量最高的前15条推文:
# 推荐用slice_head(dplyr新版本更推荐的写法) top_15_tweets <- tweets %>% arrange(desc(retweet_count)) %>% slice_head(n = 15) # 或者用top_n(旧版本兼容写法) top_15_tweets <- tweets %>% top_n(n = 15, wt = retweet_count)
第三步:排查额外的坑
如果还是没效果,检查这两点:
- 数据类型问题:如果
retweet_count是字符型(比如导出CSV时自动转成了字符串),先转成数值型:tweets$retweet_count <- as.numeric(tweets$retweet_count) tweets$favorite_count <- as.numeric(tweets$favorite_count) - 确认数据集非空:运行
dim(tweets)查看数据的行数和列数,如果是0 x n说明你根本没加载到数据,得检查文件路径和读取方式。
内容的提问来源于stack exchange,提问作者R.K.
相关产品推荐
相关产品推荐

