Как адаптировать эту функцию для неограниченного поиска пользователей в rtweet? - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь адаптировать функцию в этом сообщении о переполнении стека , с целью обойти ограничение скорости (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 может быть разрешена?

...