我正在开展一个项目,我需要找到一些社交活动的范围。我想知道有多少人在丹麦的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中提取屏幕名称列表。
所以我的想法是,我可能需要使用所有不同的屏幕名称进行循环。但我不知道该怎么做。
我知道我已经描绘了我想要得到的东西,以及我如何思考/认为我能够到达那里。
由于本周末节日到期,帮助很大。
答案 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用户的向量进行了测试,这些用户既有也没有粉丝,而且有效。