#r #twitter
Вопрос:
Я хотел бы очистить несколько подписчиков пользователей Twitter, используя get_followers
функцию из rtweet
пакета, и я думаю for
, что цикл может помочь в этом процессе.
Для этого я сначала создал фрейм данных некоторых пользователей Twitter (выберите «имя экрана»). Фрейм данных, который я создал, имеет форму, как показано ниже.
> screen_name
1 xxxx
2 xxxxx
....
А затем я попробовал for
выполнить цикл с этими данными, но это не сработало. (Я использовал rtweet
пакеты и devtools
пакеты.)
flw <- vector("list", length(dataframe))
n <- 14872
for(i in seq_along(flw)){
flw[[i]] <- get_followers(user = dataframe[i], n = n)
Sys.sleep(60*15)
}
Постоянно возвращается следующая ошибка:
Ошибка в get_followers_(пользователь = список(имя экрана = c(«xxxx», «xxxxx», : is.atomic(пользователь) не соответствует ДЕЙСТВИТЕЛЬНОСТИ.
Как я могу решить эту проблему?
Я был бы искренне признателен за любые советы, отзывы и разъяснения. Спасибо
Комментарии:
1. Что, если ты это сделаешь
user = dataframe[i, "screen_name"]
?2. @slamballais Большое спасибо за ваше предложение. В результате появляется новая ошибка, в которой говорится, что Ошибка в get_followers_(пользователь = NULL, n = 14872, страница = «-1», retryonratelimit = FALSE,: значение isTrue(длина(пользователь) == 1) неверно ..
3. Эта ошибка предполагает , что с вами что-то не так
dataframe
, так как в ней говорится, что вы вводитеNULL
вuser
. Проверяйstr(dataframe)
и проверяйtable(is.null(dataframe$screen_name))
. Перед использованием обязательно удалитеNULL
значения (и любыеNA
значения ->>is.na()
)get_followers
.4. @slamballais я полностью понял. Большое вам спасибо!
Ответ №1:
flw <- vector("list", length(dataframe))
создал бы список длины, такой же, как количество столбцов, но я думаю, что вам нужен список длины, такой же, как количество строк.dataframe[i]
это выбор столбца из фрейма данных, который вам может понадобитьсяdataframe$screen_name[i]
- Вы можете использовать
lapply
map
функции или, чтобы избежатьfor
цикла и инициализации списка.
do.call(rbind, lapply(dataframe$screen_name, function(x) {
Sys.sleep(60*15)
get_followers(x, n = n)
})) -> flw
С map
:
map_df(dataframe$screen_name, function(x) {
Sys.sleep(60*15)
get_followers(x, n = n)
}) -> flw
Комментарии:
1. Большое спасибо за ваши подробные объяснения. Они будут так полезны. 🙂 Кстати, что означает знак» ->»?
2. @ClaireJoe Это эквивалентно
<-
, но все, что слева, присваивается переменной справа.