【问题标题】:Getting followers of multiple Twitter Users via rtweet通过 rtweet 获取多个 Twitter 用户的关注者
【发布时间】:2018-10-17 18:21:09
【问题描述】:

我正在使用 Michael W. Kearney 的 rtweet 包,并试图获取多个用户的关注者列表。到目前为止,如果我希望一次废弃一个用户的追随者,而不管他/她可能拥有多少追随者,它的效果很好。

但是对于我的项目,我必须废弃 155 个配置文件,因此我想知道是否有一种功能或方法可以让我为所有用户编写一个命令?到目前为止,当我尝试使用多个用户时,我收到错误消息说我一次只能使用一个用户。

编辑:两条重要信息 - 所需的输出是每个用户关注者的 155 列的数据集,我可以将其导出/写入为 csv 或用作数据框。最后,在提出任何解决方案时,请记住,如果我使用 apply 家族的任何功能,我最终会得到列表(根据 Amar 的建议答案),但问题是将列表转换为 data.frame而且由于列的长度不等,我无法使用as.data.frame() 函数。

有什么想法或方法吗?提前致谢。

【问题讨论】:

    标签: r twitter rtweet


    【解决方案1】:

    使用for 循环或apply 来完成工作。创建该包是为了通过提供执行一项特定工作(通常镜像 API)的函数来简化您与 twitter API 之间的交互。其余的(如你的请求)由 R 和其他包填写。

    (I am following this tutorial here:)

    假设您有一个要在向量中抓取的配置文件列表:

    profiles <- c("Batman", "CatWomen", "Blade")
    

    我们可以创建一个自定义函数来检索 3 个profiles 的以下内容:

    getAllFollowers <- function(name) {
    
      ## how many total follows does cnn have?
      cnn <- lookup_users(name)
    
      ## get them all (this would take a little over 5 days)
    getAllFollowers <- function (name) { 
      user_info <- lookup_users(name) 
      user_follower <- get_followers(name, n=user_info$followers_count, retryonratelimit = T)
      Sys.sleep(2) #sleep for 2 seconds
      return(user_follower) }
    

    然后我们可以使用lapply 遍历profiles 的列表并检索它们的以下内容:

    out <- lapply(X = profiles, FUN = getAllFollowers)
    

    这将创建一个list 对象,该对象(来自读取)是:

    关注者 ID 的 tibble 数据框(一列名为“user_id”)。

    【讨论】:

    • "关注者 ID 的 tibble 数据框(一列名为 "user_id")。"这是否意味着我通过您的方法抓取的所有关注者都会出现在一个列中?因此,我无从得知蝙蝠侠的追随者从哪里结束,而猫女的追随者从哪里开始?此外,我有兴趣将所有关注者放在不同的列中,但我认为将列表更改为数据框,然后更改为 csv 应该不是问题,但是将所有关注者放在一个列中是一个问题!不是吗?
    • 不,它们允许分开。您将有一个名为out 的列表,其中包含 3 个对象,每个配置文件一个。这些对象中的每一个都是一个 tibble 数据框,其中包含一个名为 user_id 的单列。这就像分别运行该函数 3 次,然后像这样组合输出:out &lt;- c(out_batman, out_catwomen, out_blade)
    • 你写的函数需要一些格式。 getAllFollowers &lt;- function (name) { user_info&lt;- lookup_users(name) user_follower &lt;- get_followers(name, n=user_info$followers_count, retryonratelimit = T, Sys.sleep(2)) return(user_follower) }。另外,我发现 sapply 更好,因为它提供了profilename$user_id。最后,输出不是 df 而是列表。虽然它是 tibble,但我不能使用简单的 df 命令,例如 head(out)is.list(out) 也提供 True。我在 R 和区分数据格式方面仍然很天真,因此仍然试图以正确的格式获得输出,但感谢它确实有效:)
    • 您从未指定所需的输出,请更新您的帖子以指定此信息。说实话,你给我的工作很少。信息越多越好。是的,输出是一个小标题列表。我上面说的很明确。
    • 我已经编辑了帖子并标记了您的答案。只是出于好奇!您对我在帖子的编辑版本中提到的内容有任何想法吗?
    猜你喜欢
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2014-07-25
    • 1970-01-01
    • 2013-06-30
    相关资源
    最近更新 更多