我如何有效地找到推文的数量&使用R转发时间跨度? (TwitteR包)

时间:2017-08-18 16:59:00

标签: r performance api twitter

我想知道在选举前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,但还没有设法让它们运行..

1 个答案:

答案 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)
}