如何通过方法矢量化/管道?

问题描述 投票:0回答:1

我正在使用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() 
       }

稍微修改一下,我想我可以让它工作,但我不确定它是否是最好的方法。

r loops methods twitter vectorization
1个回答
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身份验证工作。

© www.soinside.com 2019 - 2024. All rights reserved.