如何向量化/通过方法?

时间:2019-02-27 01:08:49

标签: r loops methods twitter vectorization

我正在使用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 :(得分:2)

或者,使用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身份验证有效。