我正在使用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()
}
稍微修改一下,我想我可以让它工作,但我不确定它是否是最好的方法。
或者,使用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
身份验证工作。