Отсутствует имя в иерархии данных во время «bind_rows» из dplyr в Rstudio - Получение тикера Okex - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь преобразовать okex-ticker в фрейм данных, используя библиотеку dplyr, которая была очень успешной на других торговых площадках.

Вот весь код:

library(dplyr)
library(httr)
GET(
  url = "https://www.okex.com/v2/spot/markets/tickers"
) -> okexRes
x5=content(okexRes)
dfokex <- bind_rows(x5$data)

Iдумаю, что в скобках последней строки чего-то не хватает, например (x5$data$???), но в среде RStudio это выглядит следующим образом

x5        Large list
 code : int 0
 data :List of 407
 ..$ :List of 24
 .. .. $ brokerId: int 0
 .. .. $ buy: chr "9314.4"
 .. .. $ change: ...

Какое имя (?) второго списка здесь? Есть ли функция для отображения имен? Заранее спасибо:)

1 Ответ

1 голос
/ 05 ноября 2019

Одна проблема, которую я вижу здесь, состоит в том, что ответ от этого API содержит пустой объект под ключом json "name". Это выглядит как {[...], "name":{}, [...]} в тикере.
R преобразует это в пустой список - что приведет к ошибке при попытке привести записи data в фрейм данных.

Что легко поможет вам в вашей проблеме, так это если вы добавите один шаг, в котором вы flatten будете вводить каждую запись data, которая преобразует список в кадр данных, готовый для привязки строк.

Попробуйте это:

library(dplyr)
library(purrr)

dfokex <- x5$data %>%
  lapply(flatten_dfr) %>%
  bind_rows()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...