Twitter:立即获得多个用户的关注者

时间:2015-06-23 04:59:41

标签: r twitter

我正在开展一个项目,我需要找到一些社交活动的范围。我想知道有多少人在丹麦的Tinderbox节日上发表评论。 我所做的是在Twitter上获得状态,包括“#34; tinderbox"关于语言丹麦语。然后我想从这些屏幕名中提取关注者的数量。所以我的代码的第一部分由:

给出
library("twitteR")
setup_twitter_oauth(consumer_key,consumer_secret,access_token,access_secret)
1
#get data
TB<-searchTwitter("tinderbox", lan="da", n=10000)
#put into a dataframe
df <- do.call("rbind", lapply(TB, as.data.frame))

我的想法是使用与下面示例中相同的输出,即 直接从twitter数据获取followersCount。 这个例子可以在stackoverflow上找到。但我不知道如何解决我的目的(fetching large number of followers and followees in R

library(twitteR)
user <- getUser("krestenb")
followers <- user$getFollowers()
b <- twListToDF(followers)
f_count <- as.data.frame(b$followersCount)
u_id <- as.data.frame(b$id)
u_sname <- as.data.frame(b$screenName)
u_name <- as.data.frame(b$name)
final_df <- cbind(u_id,u_name,u_sname,f_count)
sort_fc <- final_df[order(-f_count),]
colnames(sort_fc) <- c('id','name','s_name','fol_count')

我的问题是,我不能简单地在关注者&lt; - &lt; - user $ getFollowers()中使用用户名向量,方法是从df $ screenName中提取屏幕名称列表。

所以我的想法是,我可能需要使用所有不同的屏幕名称进行循环。但我不知道该怎么做。

我知道我已经描绘了我想要得到的东西,以及我如何思考/认为我能够到达那里。

由于本周末节日到期,帮助很大。

1 个答案:

答案 0 :(得分:1)

以下是一些示例代码,基于您在原始问题中的内容,该代码将聚合一组用户的Twitter结果:

# create a data frame with 4 columns and no rows initially
df_result <- data.frame(t(rep(NA, 4)))
names(df_result) <- c('id', 'name', 's_name', 'fol_count')
df_result <- df_result[0:0,]

# you can replace this vector with whatever set of Twitter users you want
users <- c("krestenb", "tjb25587")                    # tjb25587 (me) has no followers

# iterate over the vector of users and aggregate each user's results
sapply(users, function(x) {
                  user <- getUser(x)
                  followers <- user$getFollowers()
                  if (length(followers) > 0) {        # ignore users with no followers
                      b <- twListToDF(followers)
                      f_count <- as.data.frame(b$followersCount)
                      u_id <- as.data.frame(b$id)
                      u_sname <- as.data.frame(b$screenName)
                      u_name <- as.data.frame(b$name)
                      final_df <- cbind(u_id,u_name,u_sname,f_count)
                      sort_fc <- final_df[order(-f_count),]
                      colnames(sort_fc) <- c('id','name','s_name','fol_count')
                      df_result <<- rbind(df_result, sort_fc)
                  }
              })

要点

我在<<-数据框上执行rbind时使用了全局赋值运算符df_result,这样它就会“粘住”在循环之外。正如我在原始答案中提到的,您可以使用sapply函数迭代用户向量。在循环内部,结果汇总。

我使用包含Twitter用户的向量进行了测试,这些用户既有也没有粉丝,而且有效。