Facebookの情報を取得する
あけましておめでとうございます。今年初の記事です。Rbloggersで気になった記事があったので、やってみようと思ったのですが、、、
http://applyr.blogspot.com/2012/01/mining-facebook-data-most-liked-status.html
いろいろ下記の設定をしたのですが、結局Rgraphvizが自分のマシンでは動かず、グラフを描くところまで行きませんでした。
- Rgraphvizをインストールする
- パッケージのインストール:http://bioconductor.org/packages/release/bioc/html/Rgraphviz.html
- Rgraphvizに対応している2.20.3aをインストール:http://www.graphviz.org/pub/graphviz/stable/windows/
コードはこちら↓
access_token <- "...................." require(RCurl) require(rjson) # Facebook json function copied from original (Romain Francois) post facebook <- function( path = "me", access_token, options){ if( !missing(options) ){ options <- sprintf( "?%s", paste( names(options), "=", unlist(options), collapse = "&", sep = "" ) ) } else { options <- "" } data <- getURL( sprintf( "https://graph.facebook.com/%s%s&access_token=%s", path, options, access_token ), ssl.verifypeer = FALSE ) fromJSON( data ) } friends <- facebook( path=".../friends" , access_token=access_token) # extract Facebook IDs friends.id <- sapply(friends$data, function(x) x$id) friends.name <- sapply(friends$data, function(x) iconv(x$name,"UTF-8","ASCII//TRANSLIT")) # short names to initials initials <- function(x) paste(substr(x,1,1), collapse="") friends.initial <- sapply(strsplit(friends.name," "), initials) # friendship relation matrix N <- length(friends.id) friendship.matrix <- matrix(0,N,N) for (i in 1:N) { tmp <- facebook( path=paste(".../mutualfriends", friends.id[i], sep="/") , access_token=access_token) mutualfriends <- sapply(tmp$data, function(x) x$id) friendship.matrix[i,friends.id %in% mutualfriends] <- 1 } require(Rgraphviz) # convert relation matrix to graph g <- new("graphAM", adjMat=friendship.matrix) # ellipse graph with initials pdf(file="facebook1.pdf", width=25, height=25) attrs <- list(node=list(shape="ellipse", fixedsize=FALSE)) nAttrs <- list(label=friends.initial) names(nAttrs$label) <- nodes(g) plot(g, "neato", attrs=attrs, nodeAttrs=nAttrs) dev.off()
自分の環境では、最後のplot()でRがクラッシュてしまいます(32 bit版のRを使っても)。友人情報は取得できたので、Graphviz以外の方法でグラフを描けばいいかも。しかしRは他ソフトと連携しようとすると、エラーが多くなって安心して使えないですね。Rに限った話では無いかもしれませんが。
今回うまくいかなかったのも、原因は確定できませんが、64bitマシンを使ったからかなぁと。OSが変わるといろいろ大変ですね。。うまく行った方がいらっしゃれば、ぜひ教えて頂ければ幸いです。