[R-es] Api R

Javier Nieto mac_javi en hotmail.com
Mie Jun 21 09:18:22 CEST 2017


Hola a tod en s, buenas noches


Tengo el siguiente problema:

Necesito ejecutar un script de R en un servidor remotamente, pues el script es parte de un sistema. Estoy utilizando el paquete plumber para realizarlo. Si tomo las funciones de ejemplo de la documentación, funciona:


#* @get /mean
normalMean <- function(samples=10){
  data <- rnorm(samples)
  mean(data)
}

#* @post /sum
addTwo <- function(a, b){
  as.numeric(a) + as.numeric(b)
}



lo llamo de esta forma y funcionan bien:

 curl "http://localhost:8000/mean"

 [-0.254]

$ curl "http://localhost:8000/mean?samples=10000"

 [-0.0038]

$ curl --data '{"a":4, "b":5}' http://localhost:8000/sum

 [9]


El último comando utiliza un el formato json, también funciona si lo hago de esta forma

curl --data @datos_sumar.json http://localhost:8000/sum

donde '{"a":4, "b":5}' esta dentro del archivo datos_sumar.json


La pregunta es, ¿cómo puedo pasarle un archivo json el cual dentro del código sea un dataframe?
He intentado con

#* @get /prueba
json <- function(df){
  require(jsonlite)
  print(ls())
  mydf <- fromJSON(df)
  mydf$sueldo <- c(20000, 22000, 0, 15000)
  mydf
}


y con el archivo con el contenido:

{"df":
[
  {"Name" : "Mario", "Age" : 32, "Occupation" : "Plumber"},
  {"Name" : "Peach", "Age" : 21, "Occupation" : "Princess"},
  {},
  {"Name" : "Bowser", "Occupation" : "Koopa"}
]
}

y así también pero no doy con la solución

[
  {"Name" : "Mario", "Age" : 32, "Occupation" : "Plumber"},
  {"Name" : "Peach", "Age" : 21, "Occupation" : "Princess"},
  {},
  {"Name" : "Bowser", "Occupation" : "Koopa"}
]



curl --data @empleados.json http://localhost:8000/prueba

¿Por favor alguien me podría ayudar?

muchas gracias

Saludos



	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es