【发布时间】:2016-10-11 14:29:18
【问题描述】:
免责声明:我知道this question 之前有人问过。此答案中提供的答案过去对我有用,但由于某种原因现在停止了。
我正在从 Mailchimp API 中提取营销电子邮件统计信息。过去半年左右我一直在这样做。然而,在过去的 2 个月里,我相信我拉取的结构发生了变化,因此我的代码不再有效,我不知道为什么。我相信这与我收到的数据框列表中的嵌套数据框有关。
这是我的代码示例和生成的数据框列表。我已从我的代码和图像中删除敏感信息:
library(httr)
library(jsonlite)
library(plyr)
#Opens-----------
opens1 <- GET("https://us4.api.mailchimp.com/3.0/reports/***ReportNumber***/sent-to?count=4000",authenticate('***My Company***', '***My-Password***'))
opens1 <- content(opens1,"text")
opens1 <- fromJSON(opens1)
然后我运行opens1 <- ldply(opens1, data.frame),我收到以下错误:
Error in allocate_column(df[[var]], nrows, dfs, var) :
Data frame column 'merge_fields' not supported by rbind.fill
我尝试使用和查找rbind.fill() 以及帖子顶部链接答案中描述的其他方法,但无济于事。我对 merge_fields 变量的解释有什么不正确,或者我离题了,我该如何纠正?
我只是想从opens1 列表中获取所有变量的一个数据框。
感谢您的任何帮助,请随时提出任何澄清问题!
【问题讨论】:
-
如果您真的需要帮助,您需要在示例输入数据中包含某种reproducible example(数据图片没有帮助)。该数据看起来不是很平坦。甚至不确定预期的输出是什么。
-
@MrFlick 如果可以的话,我会生成可重现的样本数据,但我的大部分问题是处理我什至在这里看到的内容。当我尝试运行
dput()时,即使只有 1 行,我也会从控制台获得大量数据。我想我假设在更改 API 之前,生成的opens1是一个简单的数据帧平面列表,但现在已经转移到子数据帧中。我的问题是如何使用带有子数据框的数据框列表结构(或者我什至可以)?