【问题标题】:Getting Twitter Follower and Friends Network for multiple users in R在 R 中为多个用户获取 Twitter 关注者和朋友网络
【发布时间】:2016-11-29 16:01:14
【问题描述】:

亲爱的,我是 R 新手,我需要你的帮助,

我有一个用户名列表,我需要为其检索所有关注者和朋友,并创建一个边缘列表并将其存储在 CSV.file 中以供进一步分析。问题:我编译的用户名列表非常大,我需要遍历用户向量并将每个用户的结果聚合到一个文件中。 我可以一个一个地做这件事,但自动做这件事显然更好。这是我用来为一个 twitter 用户创建边缘列表的代码。正如我解释的那样,我打算做同样的事情,但是对于大量的 Twitter 用户名。 假设已建立与 Twitter API 的连接,我使用以下包:

library(twitteR)
library(foreign)
library(xlsx)
library(base64enc)
library(rJava)
library(devtools)
library(RCurl)
library(igraph)

然后我得到用户朋友:

start <- getUser("@camharvey")
friends_object <- lookupUsers(start$getFriendIDs())
friends_object
friendsCount(start)

获取用户关注者

followers_object <- lookupUsers(start$getFollowerIDs())
followers_object
followersCount(start)

从两个对象创建一个列表

friends <- sapply(friends_object[1:117],name)
followers <- sapply(followers_object[1:1033],name)

将两个列表合并到一个数据框中,以创建来自关注者和朋友的边缘文件

relations <- merge(data.frame(User='@camharvey',followers=friends), data.frame(User=followers, followers='@camharvey'), all=TRUE)

如何对多个用户名执行相同操作? 提前致谢

【问题讨论】:

    标签: r twitter igraph


    【解决方案1】:

    您可以创建一个 for 循环并遍历用户名列表以填充列表。然后把这个列表变成一个边缘列表。这将需要一些时间,因为您说您拥有大量用户,并且朋友和关注者的列表可能非常大。 (特别是lookupUsers(start$getFriendIDs())followers_object &lt;- lookupUsers(start$getFollowerIDs()) 这行需要相当长的时间,不确定是否有更有效的方法来完成这个......)

    users <- c("@camharvey",etc.) #List of usernames
    userrelations <- list() #Create an empty list to populate
    
    for (i in 1:length(users)){
      start <- getUser(users[i])
      friends_object <- lookupUsers(start$getFriendIDs())
      followers_object <- lookupUsers(start$getFollowerIDs())
      friends <- sapply(1:length(friends_object), 
                        function(x) name(friends_object[[x]]))
      followers <- sapply(1:length(followers_object), 
                          function(x) name(followers_object[[x]]))
      userrelations[[i]] <- merge(data.frame(User=users[i],followers=friends),
                                  data.frame(User=followers, followers=users[i]), 
                                  all=TRUE)
    }
    

    这会填充每个用户的朋友和关注者网络列表。接下来,将列表的所有元素组合成一个数据框并写入csv:

    user_el <- do.call("rbind",userrelations)
    write.csv(user_el, "filename.csv", row.names = F)
    

    我只对三个用户进行了尝试,但花了一些时间。在我的电脑上,运行时间是这样的:

       user  system elapsed 
    175.544   3.356 317.304 
    

    仅供参考,start$getFollowerIDs()lookupUsers(start$getFollowerIDs())很多,所以如果您可以使用 ID 号而不是名称,它会更快。

    【讨论】:

    • 亲爱的 Paqmo,非常感谢您的回复。它工作得很好。干杯
    猜你喜欢
    • 2011-11-14
    • 1970-01-01
    • 2014-01-06
    • 2012-07-20
    • 2018-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多