【发布时间】:2020-03-26 05:49:57
【问题描述】:
大家好,
通过使用导入的数据生成表格,我有这段代码可以正常工作:
library(jsonlite)
library(data.table)
response = fromJSON("https://www.cryptocompare.com/api/data/coinlist")
df = data.table::rbindlist(response$Data, fill=TRUE)
View(df)
但是,当我尝试使用此部分来拉取一个或多个代币的历史价格时:
library(jsonlite)
library(data.table)
response = fromJSON("https://min-api.cryptocompare.com/data/v2/histoday?fsym=BTC&tsym=USD&limit=10")
df = data.table::rbindlist(response$Data, fill=TRUE)
View(df)
我收到此错误消息:
Error in data.table::rbindlist(response$Data, fill = TRUE) : Item 1
of input is not a data.frame, data.table or list
我真的很困惑,因为从它们都生成的结果来看(通过在浏览器中执行 web 链接,我得到几乎相同的标题数据......
请问我该如何解决这个问题?
谢谢 亚辛
[编辑] 改代码后为:
library(jsonlite)
library(data.table)
response = fromJSON("https://min-api.cryptocompare.com/data/v2/histoday?fsym=BTC&tsym=USD&limit=10")
df = data.table(response$Data, fill=TRUE)
View(df)
我得到了这个(一个单元格中的所有数据): Result table screenshot
请问如何将价格从 1 个单元格转换为行?
谢谢 亚辛
【问题讨论】:
-
您查看过您的数据 (
str(response)) 吗?这两个查询的结构完全不同。 -
对不起,我不明白我应该怎么做?请问如何让表格生成第二段的请求数据?
-
您的数据不同。第二个
response有response$Data$Data,这是一个data.frame(不需要rbindlist)。如果您期望它与第一个 API 调用(正在工作)相似,那么就有问题了,因为没有任何列看起来匹配,这表明这是一个不同的响应。我不知道你应该做什么:我不知道数据,也不知道你打算用它做什么。