我想知道在选举前2个月内,几个政党(> 2000名候选人)的英国大选候选人的推文数量,收藏数和转推数(累积数量已足够)。到目前为止,我已经尝试使用TwitteR的usertimeline进行循环,然后(在循环中,因为我不知道如何保存它),节省了推文和转推和收藏的数量。
current是包含twitter用户名的列表。我是新手编程,所以请不要讨厌:
tweetsy.2017 <- function(x){
one = userTimeline(x, n =3200, includeRts = TRUE,excludeReplies=FALSE)
onedf = twListToDF(one)
oneperiod = subset(onedf, created >= as.POSIXct('2017-04-18 00:00:00') & created <= as.POSIXct('2017-06-08 23:59:00')) #61 days
oneperiod2 = oneperiod[oneperiod$isRetweet == FALSE,]
ro = nrow(oneperiod)
f = sum(oneperiod$favoriteCount)
re = sum(oneperiod$retweetCount)
output = list(ro, f, re)
return(output)
#Sys.sleep(100)
}
Tweets.2017 = lapply(current, tweetsy.2017)
我的问题是,这需要很长时间并且不提供中间数据。此外,下载所有推文只是为了获得它们的数量似乎效率低下。哦,我只是把睡眠放在那里以防我达到API限制,但似乎我的代码太慢而无法到达它。
有没有人有更好的想法?我已经尝试了mclapply和parLapply,但还没有设法让它们运行..
答案 0 :(得分:0)
将其包装成for循环,因此我可以获得中间结果。现在工作正常!
for(i in 1:nrow(current)){
print(paste("Row number ", i , " of ", nrow(twitter_data)))
id <- twitter_data[i, 1]
print(as.vector(id))
ab[[i]] <- tweetsy.2017(id)
print("Process sleeps for a few seconds due to twitter API security
issues and then it will continue")
Sys.sleep(9)
}