2016-05-24 1 views
0

J'utilise la fonction POST dans la bibliothèque httr pour obtenir des données et le code est affiché ci-dessous.Obtention de données binaires lors de l'utilisation de la requête POST dans le package httr

library(httr) 

url = "https://xxxx:[email protected]/_search" #omitted for privacy 
a = POST(url,body = query,encode = "json") 

La requête est illustrée ci-dessous en annexe. a$content me donne tout un tas de nombres hexadécimaux sur lesquels je dois utiliser une autre fonction avant de pouvoir obtenir des données utiles.

Finalement, je souhaite obtenir un cadre de données en utilisant b = fromJSON(a$content). Jusqu'à présent, afin d'obtenir les données que je dois utiliser:

chr<-function(n){rawToChar(as.raw(n))} 
b = jsonlite::fromJSON(chr(a$content)) 
data = b$hits$hits$`_source` 

Cela semble inefficace étant donné que je suis dans l'analyse des données par une fonction locale pour obtenir les données finales. Donc, mes questions sont les suivantes:

  1. Est-ce que j'utilise la fonction POST correctement pour obtenir la requête?
  2. Existe-t-il un moyen plus efficace (plus rapide) d'obtenir mes données dans une trame de données?

Annexe:

query = ' 
{ 
    "_source": [ 
    "start","source.country_codes", 
    "dest.country_codes" 
    ], 
    "size": 100, 
    "query": { 
    "bool": { 
    "must": [ 
    { 
    "bool": { 
    "must_not": [ 
    { 
    "range": { 
    "start": { 
    "lte": "2013-01-01T00:00:00" 
    } 
    } 
    }, 
    { 
    "range": { 
    "start": { 
    "gt": "2016-05-19T00:00:00" 
    } 
    } 
    } 
    ] 
    } 
    } 
    ] 
    } 
    } 
}' 
+0

utilisation 'contenu (a)' – marbel

Répondre

0
  1. fonction POST semble bon.

  2. js<-fromJSON(content(a,as="text"))