2016-01-07 2 views
0

Я пытаюсь передать функцию функции в моем приложении opencpu, используя ocpu.rpc. Я знаю, что API может справиться с этим, потому что я проверил функцию sapply в базе R (среди прочих), используя API test facility.Как передать функции более высокого порядка через ocpu.rpc?

opencpu accepts functions as arguments

Однако, я был не в состоянии сделать то же самое с ocpu.rpc. Я просто вижу HTTP/1.1 400 Bad Request.

ocpu.rpc("sapply", 
    {FUN: "sqrt", X: [1,4,9,16,25,36]}, 
    function(output) { output } }) 

Может кто-нибудь привести пример того, как сделать этот вызов (и возвращает вектор JSON) с использованием ocpu.rpc?

Я бы попросил, чтобы вы помогли мне создать jsfiddle, но в последнее время я не смог редактировать скрипты.

jquery or opencpu has been blocked

+0

Эта проблема редактирования jsfiddle, кажется, происходит периодически, где бы я ни находился. Мне интересно, просто ли они не сохраняют порядок загрузки javascript-библиотеки, и он работает в два раза подряд. – wdkrnls

ответ

0

Оказывается, я могу использовать match.fun превратить JSON аргумент в выражение функции на стороне АиР. На самом деле это то, что по умолчанию sapply. Я просто неправильно понял. Я основывал свой код на примере lowess, который возвращает список с двумя аргументами: x и y.

//set CORS to call "stocks" package on public server 
ocpu.seturl("//public.opencpu.org/ocpu/library/base/R") 

//some example data 
var mydata = [1, 4, 9, 16, 25]; 

//call R function: stats::var(x=data) 
$("#submitbutton").click(function(){ 
    var req = ocpu.rpc("sapply",{ 
     X : mydata, 
     FUN : "sqrt" 
    }, function(output){ 
     $("code").text(output.join("\n")); 
    }); 

    //optional 
    req.fail(function(){ 
     alert("R returned an error: " + req.responseText); 
    }); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^