2012-02-08 13 views
5

R(フォロワー> 100000)を使ってユーザーのTwitterフォロワーのプロフィールを探したいと思います。 twitteRは素晴らしいパッケージですが、レート制限を超えないようにスリープルーチンを実装する必要があるため、高いレベルのフォロワーを扱うときに問題があります。私はここでは相対的に初心者であり、フォロワーIDオブジェクトをどのようにループしてフォロワーIDを100のバッチで入力するのか疑問に思っています(これはTwitter APIが一度に処理できる最大のものです)。ルックアップTwitterのフォロワーR

編集:コードは、私が最初に私はTwitterのパッケージを使用していないことを伝えることから始めましょう (ツイッター) ライブラリ(plyr) maxTwitterIds = 100 = 500#秒 スリープ時間

user<-getUser("[username]") 
followers<-zz$getFollowerIDs() 
ids_matrix = matrix(zz, nrow = maxTwitterIds, ncol = length(zz)/maxTwitterIds) 
followers<-zz$getFollowerIDs() 
#note: for smaller lists of followers it is possible to use the command "lookupUsers(zz)  at this point 
foll<-getTwitterInfoForListIds = function(id_list) { 
    return(lapply(id_list, 

names <- sapply(foll,name) 
sn<sapply(foll,screenName) 
id<-sapply(foll,id) 
verified<-sapply(foll,erified) 
created<-sapply(foll,created) 
statuses<-sapply(foll,statusesCount) 
follower<-sapply(foll,followersCount) 
friends<-sapply(foll,friendsCount) 
favorites<-sapply(foll,favoritesCount) 
location<-sapply(foll,location) 
url<-sapply(foll,url) 
description<-sapply(foll,description) 
last_status<-sapply(foll,lastStatus))) 
} 
alldata = alply(, 2, function(id_set) { 
    info = getTwitterInfoForListIds(id_set) 
    Sys.sleep(sleeptime) 
    return(info) 
}) 
+0

私は、http://cran.r-project.org/web/packages/twitteR/twitteR.pdfの6ページで、あなたは良い情報を見つけることができると思います。 – aatrujillob

+0

ええ、問題は、フォロワーの大きなリストを扱うときに、速度制限をすばやく超えているため、IDブロックを100のバッチに分割してSys.sleepの後にそれぞれ実行する方法を探しています。 –

答えて

0

を追加しました。したがって、私はあなたにこれを行う方法の構造を教える擬似コードを提供することしかできません。それはあなたを始めるはずです。

library(plyr) 

# Some constants 
maxTwitterIds = 100 
sleeptime = 1 # sec 

# Get the id's of the twitter followers of person X  
ids = getTwitterFollowers("x") # I'll use ids = 1:1000 
ids_matrix = matrix(ids, nrow = maxTwitterIds, 
         ncol = length(ids)/maxTwitterIds) 

getTwitterInfoForListIds = function(id_list) { 
    return(lapply(id_list, getTwitterInfo)) 
} 

# Find the information you need from each id 
alldata = alply(ids_matrix, 2, function(id_set) { 
    info = getTwitterInfoForListIds(id_set) 
    Sys.sleep(sleeptime) 
    return(info) 
}) 

たぶん、あなたはこのから抜け出すデータ構造は、いくつかの研磨(それがネストされたリストである)が、あなたは言い難いのTwitterアカウントから抽出するかについての情報なしを必要とします。

+0

クイック返信をありがとう。 「getTwitterInfo」の代わりに、twitteRパッケージ(getName、getLocation ...)によって定義されたさまざまなパラメータを配置しました。ただし、エラー "Splitter_a(.data、.margins、.expand)のエラー:無効なマージン"が返されます。 100 IDのバッチでデータを入力するのに必要な読み取り機能はありますか? –

+0

再現可能な例を提供してください。このようにして、アドバイスするのは難しいです。 –

+0

上記が十分明確であるかどうかわかりません(私は少し霧がかかっています)。しかし、RCurlを使用してAPIに直接アクセスする方法もあります。上で作成した行列のreadLines関数を使用して一度にURL 100にバッチIDを貼り付けます。私はこれまでこれまでに失敗してしまった。誰にでもいくつかのアイデアがありますか? –

関連する問題