gpt4 book ai didi

r - 在 R 中获取多个用户的 Twitter 关注者和 friend 网络

转载 作者:行者123 更新时间:2023-12-02 08:40:36 24 4
gpt4 key购买 nike

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

我有一个用户名列表,我需要检索所有关注者和 friend 并创建边缘列表并将其存储在 CSV.文件中以供进一步分析。问题:我编译的用户名列表非常大,我需要迭代用户向量并将每个用户的结果聚合到一个文件中。 我可以一项一项地执行此操作,但自动执行此操作显然更好。这是我用来为一个 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)

将两个列表合并到一个数据框中,以从关注者和 friend 创建边缘文件

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

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

最佳答案

您可以创建一个 for 循环并循环用户名列表以填充列表。然后将这个列表变成边缘列表。这将需要一些时间,因为您说您拥有大量用户,并且 friend 和关注者列表可能非常大。 (特别是 lookupUsers(start$getFriendIDs())followers_object <- 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)
}

这会填充每个用户的 friend 和关注者网络的列表。接下来,将列表的所有元素组合成一个数据框并写入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 号而不是姓名,速度会快得多。

关于r - 在 R 中获取多个用户的 Twitter 关注者和 friend 网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40870314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com