r - R rtweet:如果给定 Twitter 句柄没有返回结果,则 search_tweets 循环不会继续
问题描述
我有一个 Twitter 句柄的数据框。当我使用该search_tweets
函数遍历句柄时,如果 Twitter 句柄之一没有返回任何结果,则循环将停止收集推文。
我想构造循环,如果没有返回结果,它会忽略句柄并移至下一个。
我的句柄数据框如下所示:
handles=data.frame(`Twitter Handle`=c("@_CHKD","@AIDHC","@BannerChildrens","@BaptistOnline"))
循环如下所示:
# Loop through the twitter handles & store the results as individual dataframes
for(handle in twitter_handles) {
result <- search_tweets(handle, n = 3500 , include_rts = FALSE,retryonratelimit = TRUE)
result$`Twitter Handle` <- handle
result$Source <- "Search"
df_name <- paste(tolower(substring(handle, 2)),"_search")
if(exists(df_name)) {
assign(df_name, unique(rbind(get(df_name), result)))
} else {
assign(df_name, result)
}
}
当我运行循环时,它遇到一个不返回任何内容的句柄后会引发以下错误:
fix.by(by.x, x) 中的错误:“by”必须指定唯一有效的列
我试图在网上搜索解决方案,但没有成功。任何指针都会非常有帮助。
解决方案
search_tweets
所以对我来说,当我处理没有推文的句柄(即“@BannerChildrens”)时,我没有看到错误,而是返回一个长度为 0 的空 data.frame。通过添加 if 语句,您可以排除所有没有推文的句柄推文。以下代码返回我的全局环境中没有错误的三个数据帧(“@_CHKD”、“@AIDHC”、“@BaptistOnline”)。
handles=data.frame(`Twitter Handle`=c("@_CHKD","@AIDHC","@BannerChildrens","@BaptistOnline"), stringsAsFactors = FALSE)
for(handle in handles$Twitter.Handle) {
result <- search_tweets(handle, n = 3500 , include_rts = FALSE,retryonratelimit = TRUE)
if(length(result) != 0){
result$`Twitter Handle` <- handle
result$Source <- "Search"
df_name <- paste0(tolower(substring(handle, 2)),"_search")
if(exists(df_name)) {
assign(df_name, unique(rbind(get(df_name), result)))
} else {
assign(df_name, result)
}
}
}
推荐阅读
- tensorflow - 如何使用反向传播/梯度节点生成和保存模型文件?
- python - Python Pandas 根据列值过滤行返回 NaN
- javascript - 区分不同类型的 beforeunload 事件
- python - DataFrame 字符串数据操作
- python - 如何使用 node.js 检查 opensea 上的令牌是 ERC721 还是 ERC1155
- if-statement - 如果没有值,则让 Iferror 和 Googlefinance 打印“空白”单元格
- c# - Blazor - 获取由父级设置的对象
- python - 从 csv 数据创建对象
- odoo-15 - 如何在 odoo15 中添加模块
- reactjs - 当我通过 fetch 和 componentDidMount 传递值时,该值没有显示