我正在使用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()
}
稍微修改一下,我想我可以解决这个问题,但是我不确定这是否是最好的方法。
答案 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
身份验证有效。