如何通过ocpu.rpc传递高阶函数?

时间:2016-01-07 15:42:52

标签: r macros packages opencpu

我尝试使用ocpu.rpc将功能传递到opencpu应用中的某个功能。我知道opencpu API可以处理它,因为我已经使用API test facility在基础sapply(以及其他)中使用R函数进行了测试。

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 } })

任何人都可以使用ocpu.rpc提供一个关于如何进行此调用(并返回JSON向量)的示例吗?

我要求您帮我创建一个jsfiddle,但最近我无法编辑小提琴。

jquery or opencpu has been blocked

1 个答案:

答案 0 :(得分:0)

事实证明我可以使用match.funJSON参数转换为R侧的函数表达式。这实际上是sapply默认执行的操作。我只是错误的返回值。我的代码基于lowess示例,它返回一个包含2个参数的列表:xy

//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); 
    });
});