我在构造一个循环时遇到问题,它通过附加循环结果给我一个表。
现在它是水平追加列(变量)而不是垂直添加行。
也许追加不是正确的功能?或者有没有办法让它垂直追加? 或者也许我只是认为我正在制作一张桌子,但它实际上是其他一些结构?
我发现的解决方案使用了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))
}
答案 0 :(得分: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))
}
答案 1 :(得分: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()
答案 2 :(得分: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
并且任何新数据都包含新级别,则必须先添加新的因子级别,或将这些列转换为{ {1}}。
希望这会有所帮助。如果您提供了可重复的示例,它将对我们有所帮助。