0

ループの結果を追加して 1 つのテーブルを作成するループの作成に問題があります。

現在、行を垂直に追加するのではなく、列 (変数) を水平に追加しています。

たぶん追加は正しい機能ではありませんか?または、垂直に追加する方法はありますか? それとも、テーブルを作っているだけだと思っていて、実際には別の構造なのでしょうか?

私が見つけた解決策は rbind を使用していましたが、rbind 関数を使用してループを設定する方法がわかりませんでした。

for (i in 1:3) {
  users.humansofnewyork = append(users.humansofnewyork, getPost( (humansofnewyork$id[i]) , token, n = 500, comments = TRUE,likes = TRUE, n.likes=500, n.comments=500))
}

返信ありがとうございます。残念ながら、どのソリューションも機能しませんでした。

それは完全なコードです:

#start the libaries
library(Rfacebook)
library(Rook)
library(igraph)

#browse to facebook and ask for token
browseURL("https://developers.facebook.com/tools/explorer")

token <- "...copy and paste token"

#get Facebook fanpage "humansofnewyork" with post id
humansofnewyork <- getPage("humansofnewyork", token, n=500)

users.humansofnewyork = c()

for (i in 1:3) {
  users.humansofnewyork = append(users.humansofnewyork, getPost( (humansofnewyork$id[i]) , token, n = 500, comments = TRUE,likes = TRUE, n.likes=500, n.comments=500))
}
4

3 に答える 3

1

appendベクトル用です。cbindの列単位の兄弟であるを使用する必要がありrbindます。getPost(私はあなたのコードをコピーしました;各呼び出しで同じ長さのベクトルを返さない場合、成功の約束はありません)

for (i in 1:3) {
  users.humansofnewyork = cbind(users.humansofnewyork, getPost( (humansofnewyork$id[i]) , token, n = 500, comments = TRUE,likes = TRUE, n.likes=500, n.comments=500))
}
于 2014-04-03T13:41:33.047 に答える
0

の結果がgetPostの列と同じ要素を持つ場合users.humansofnewyork、これは機能するはずです。

for (i in 1:3) {
  users.humansofnewyork[nrow(users.humansofnewyork) + 1, ] = getPost( (humansofnewyork$id[i]) , token, n = 500, comments = TRUE,likes = TRUE, n.likes=500, n.comments=500)
}

または、を使用してrbind

for (i in 1:3) {
  users.humansofnewyork = rbind(users.humansofnewyork, getPost( (humansofnewyork$id[i]) , token, n = 500, comments = TRUE,likes = TRUE, n.likes=500, n.comments=500))
}

ただし、 の列のusers.humansofnewyorkいずれfactorかが で、新しいデータのいずれかに新しいレベルが含まれている場合は、最初に新しい因子レベルを追加するか、それらの列を に変換する必要がありますcharacter

お役に立てれば。再現可能な例を提供していただけると助かります。

于 2014-04-03T13:43:43.227 に答える
0

たとえば、次のデータがあります。

data <- data.frame ("x" = "a", "y" = 1000)
data$x <- as.character (data$x)
data
  x    y
1 a 1000

そして、ループで新しい値を持つ新しい行を追加したい

for (i in 1:3) {  
  data <- rbind (data, c (paste0 ("Obs_",i), 10^i))  
}

したがって、次のようになります。

data
      x    y
1     a 1000
2 Obs_1   10
3 Obs_2  100
4 Obs_3 1000

新しい値を導入する順序を気にする必要があるだけですc()

于 2014-04-03T13:41:43.370 に答える