Как векторизовать / передать через методы? - PullRequest
0 голосов
/ 27 февраля 2019

Я использую twitteR , чтобы получить последователей за несколько ручек.При извлечении одного пользователя этот код работает:

test <- getUser("BarackObama")

test_friends <- test$getFriends(10) %>% 
  twListToDF() %>%   
  tibble::rownames_to_column() %>% 
  mutate(id = rowname) %>% 
  select(name, everything()) 

Однако я не уверен, каков самый чистый способ перебора списка дескрипторов.Основное препятствие, которое я вижу на данный момент, заключается в том, что я не знаю, как передать / векторизовать метод getFriends() (в отличие от функции getFriends()).Кроме того, объект, возвращаемый getFriends(), не является DF, но должен быть сплющен (?) На twListToDF(), чтобы затем использовать rbind().

Для циклов это насколько я понял:

handles <- c("BarackObama", "ThePresObama")
  while (i < length(handles))  {
  user <- getUser(handles[i]) 
  friends <- user$getFriends() %>% 
  twListToDF() 
       }

Немного повозившись, я думаю, что смогу заставить это работать, но я не уверен, что это лучший подход.

1 Ответ

0 голосов
/ 27 февраля 2019

В качестве альтернативы, используя rtweet, кажется, что есть более элегантное решение, которое может достичь вашей цели.Он извлекает подписчиков указанных пользователей в фрейм данных, просматривает подписчиков по пользователям, а затем связывает результат с исходным кадром данных, используя left_join, чтобы вы могли различить, каким пользователям соответствуют какие подписчики.

library(rtweet)
handles <- c("BarackObama", "ThePresObama")
handles.friends <- get_friends(handles)
handles.data <- lookup_users(handles.friends$user_id) %>% 
    left_join(handles.friends)

Функции pmap_* из purrr также могут помочь реализовать решение с использованием библиотеки twitteR и, как правило, помогли мне реализовать непекторизованные функции, но, к сожалению, я не могу заставить работать аутентификацию twitteR.

...