我使用map()
使用以下代码从Facebook发布数据:
posts_data <- map(posts$query_id, getPost, token = fb_oauth, n = 1000)
但是,某些query_id
观察结果不正确,或者是API无法检索的共享事件,并且给出了如下错误:
Error in callAPI(url = url, token = token, api = api) :
Unsupported get request. Object with ID '1816137521765810_1832190963493790' does not exist, cannot be loaded due to missing permissions, or does not support this operation. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api
我知道我可以使用possibly()
继续进行调用,同时返回这些错误的输出,这样函数就不会停止。但我不知道如何一起使用possibly()
和map()
,因为might()只接受一个函数作为参数,并且不允许我将其他参数传递给该函数。
答案 0 :(得分:4)
possibly
将函数作为参数,但它返回另一个函数,该函数接受与其输入相同的参数。所以你应该能够做到:
posts_data <- map(posts$query_id,
possibly(getPost, otherwise = NA_character_),
token = fb_oauth, n = 1000)
答案 1 :(得分:1)
我假设你试图提取评论&#39;和回复&#39;等等 我对前面的答案略有不同 - 它转换成一个整洁的数据帧(只是对dplyr和plyr之间的冲突持谨慎态度)
sum(OB1_posts$comments_count)
mydata <- OB1_posts[OB1_posts$comments_count > 0,]
sum(mydata$comments_count) # How many 'Posts' had Comments
library(purrr)
BruteForce_comments <- possibly( getPost, otherwise = NA_real_)
Comments <- OB1_posts$id %>%
map(BruteForce_comments, token = fboauth, n = 200000, comments = TRUE,
likes = FALSE, n.likes=1, n.comments=600000) %>%
reduce(append)
library(plyr)
OB1_Comments <- ldply(Comments, data.frame)
对于回复,这是相同的,然后将它们合并在一起(但您必须首先简化&#39;列配置)
如果您有任何其他问题,请发送给我。这个套餐非常出色,你可以从中获得大量的信息 - 即使是在1月下旬的变化之后