1

他の質問は既に読みましたが、R で Facebook グラフの検索結果を解析する方法はまだわかりません。私の主な目標は、データ フレームのようなものに変換して、いくつかの列を分析することです。

library(RCurl)
library(RJSONIO)
library(rjson)

data <- getURL("https://graph.facebook.com/search?q=flamengo&type=post&limit=1000", cainfo="cacert.perm")
#if you don't have "cacert.perm" file, do as follow
#download.file(url="http://curl.haxx.se/ca/cacert.pem", destfile="cacert.perm")

更新: ありがとう @ user1609452

「いいね」にネストされた「カウント」を含めたい場合はどうすればよいでしょうか。私に見せてください:

names(fbData$data[[1]])
[1] "id"           "from"         "message"      "actions"      "privacy"     
[6] "type"         "created_time" "updated_time" "shares"       "likes"   
names(fbData$data[[1]]$likes)
[1] "data"  "count"

この場合、どのように match.fun 引数を設定すればよいでしょうか?

likes <- lapply(fbData$data[[1]]$likes,name='count')
Error in match.fun(FUN) : no "FUN" argument, no pattern

likes <- lapply(fbData$data[[1]]$likes,'[[',name='count')
Error in FUN(X[[2L]], ...) : index out of bounds

誰か助けてくれませんか?


そして、「いいね」にネストされた「カウント」を含めたい場合は?私に見せてください:

names(fbData$data[[1]])
[1] "id"           "from"         "message"      "actions"      "privacy"     
[6] "type"         "created_time" "updated_time" "shares"       "likes"   
names(fbData$data[[1]]$likes)
[1] "data"  "count"

この場合、どのように match.fun 引数を設定すればよいでしょうか?

likes <- lapply(fbData$data[[1]]$likes,name='count')
Error in match.fun(FUN) : no "FUN" argument, no pattern

likes <- lapply(fbData$data[[1]]$likes,'[[',name='count')
Error in FUN(X[[2L]], ...) : index out of bounds

誰か助けてくれませんか?

4

2 に答える 2

2

両方を使用するか、RJSONIOまたはrjson呼び出す必要はありません。データをインポートしたらJSON、それをリストに変換する必要があります。

library(RCurl)
library(RJSONIO)

data <- getURL("https://graph.facebook.com/search?q=flamengo&type=post&limit=1000")

fbData <- fromJSON(data)

投稿は に含まれていfbData$dataます。

#> length(fbData$data)
#[1] 500

最初の投稿にはさまざまな属性があります。

#> names(fbData$data[[1]])
#[1] "id"           "from"         "message"      "privacy"      "type"        
#[6] "application"  "created_time" "updated_time"

このデータをデータフレームに変換するには、何を含め、どのように構造化するかを決定する必要があります。たとえば、使用できるすべてのメッセージ本文を取得するには、次のようにします。

lapply(fbData$data,'[[',name='message')

アップデート:

投稿のいいねの数を取得するには、次を使用できます。

lapply(fbData$data,function(x){x$likes$count})
于 2013-04-02T09:14:23.087 に答える
1

これは、実際にコメントで尋ねた質問に対する回答です。コメントで回答できなくて申し訳ありませんが、そうするオプションが表示されません。

/ を置き換えたい場合は、使用できます

install.packages("stringr", dep=TRUE)
library("stringr")
library("RCurl")
library("RJSONIO")
data <- getURL("https://graph.facebook.com/search?q=flamengo&type=post&limit=1000")
clean <- str_replace_all(data,"\","whatever")
fbData <- fromJSON(clean)

ここで、「何でも」はあなたがそれを置き換えるものです。ところで、RJSONIO の代わりに rjson を使用できる場合は、少し好ましいかもしれませんが、基本的には同じです。rjson はわずかに高速で確実に実行されますが、RJSONIO はより多くの機能を備えています。

ああ、ところで、jsonlint.com で JSON データを検証できます。

これは興味深いアプリのように思えますが、これは何ですか? ある種のFBストーカー?

于 2013-04-03T01:25:43.837 に答える