Я пытаюсь адаптировать функцию в этом сообщении о переполнении стека , с целью обойти ограничение скорости (90 000) функции lookup_users () вместо функции get_timeline ().
Я работаю с фреймом данных mc_flw, в котором есть один столбец user_id. Эти данные получены с помощью
lisa <- lookup_users("lisamurkowski")
mc_flw <- get_followers("lisamurkowski", n = lisa$followers_count, retryonratelimit = TRUE)
Адаптированная функция, которую я имею до сих пор, приведена ниже.
#Function solution
lookup_users_unlimited <- function(users, n){
if (length(users) ==0){
return(NULL)
}
rl <- rate_limit(query = "lookup/users")
if (length(users) <= rl$remaining){
print(glue("Getting data for {length(users)} users"))
tweets <- lookup_users(users, n, check = FALSE)
}else{
if (rl$remaining > 0){
users_first <- users[1:rl$remaining]
users_rest <- users[-(1:rl$remaining)]
print(glue("Getting data for {length(users_first)} users"))
tweets_first <- lookup_users(users_first, n, check = FALSE)
rl <- rate_limit(query = "lookup/users")
}else{
tweets_first <- NULL
users_rest <- users
}
wait <- rl$reset + 0.1
print(glue("Waiting for {round(wait,2)} minutes"))
Sys.sleep(wait * 60)
tweets_rest <- lookup_users_unlimited(users_rest, n)
tweets <- bind_rows(tweets_first, tweets_rest)
}
return(tweets)
}
Пока что я столкнулся с ошибками:
Ошибка в if (length (users) <= rl $ Осталось) {: отсутствует значение, где требуется TRUE / FALSE Дополнительно: Предупреждение: In if (length (users) <= rl $ Осталось) {: условиеимеет длину> 1, и будет использоваться только первый элемент`
Когда я сам запускаю функцию rate_limit()
, чтобы посмотреть на объект rl, фрейм данных имеет все значения NA. Что вызывает это, так что ошибка TRUE / FAlSE может быть разрешена?