Сериализация OpenCPU в случае вывода списка

Разработчики OpenCPU, я пытаюсь использовать OpenCPU для запуска кода пользовательских функций и хочу вернуть более одного параметра, используя «список». Что-то подобное:

result = list(x=data.frame(a),y=data.frame(b)) 
return (result)

Это работает хорошо, но результат упаковки OpenCPU выглядит как одна переменная (R/.var), и я могу загрузить его только как JSON в отдельном представлении. Сериализация в этом случае очень неэффективна:

{
    "x": [
    { "PC1": -0.0134, "PC2": -0.8164 }
    ,
    { "PC1": -0.2206, "PC2": -0.6093 }
    ,
    { "PC1": -1.0569, "PC2": -0.3061 }
    ],

    "y": [
    { "hp": 270, "qsec": 20.36 }
    ,
    { "hp": 270, "qsec": 20.92 }
    ,
    { "hp": 201, "qsec": 22.46 }
    ]
}

При загрузке в формате CSV OpenCPU выполняет репликацию скаляров и не может объединять фреймы данных с другим количеством строк.

Есть ли способ загрузить $x и $y отдельно? Любые более оптимальные предложения по сериализации?


person Vasiliy Nerozin    schedule 11.04.2017    source источник


Ответы (1)


Поскольку сервер R opencpu выполняет входящий запрос одновременно, вы можете разделить функцию на две функции и запускать эти функции одновременно, одна из которых дает $x, а другая $y.

Кстати, хороший вопрос о скорости и сериализации....

person Zakaria    schedule 27.04.2017
comment
Да, разделение на несколько функций возможно, но, к сожалению, это не так удобно, как простая упаковка в список. - person Vasiliy Nerozin; 28.04.2017