R rtweet: цикл 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" должен указывать уникально допустимый столбец
Я пытался найти решение в Интернете, но мне это не удалось. Любые указатели были бы очень полезны.
1 ответ
Так что для меня я не вижу ошибки, когда я search_tweets
для дескриптора без твитов (то есть "@BannerChildrens") вместо этого я возвращаю пустой data.frame длины 0. Добавляя оператор 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)
}
}
}