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

How can I pass higher order functions via ocpu.rpc?

我正在尝试将函数传递给 opencpu app using ocpu.rpc. I know the opencpu API can handle it because I've tested with the sapply function in base R (among others) using the API test facility 中的函数。

但是,我无法完成 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 进行此调用(以及 return JSON 向量)?

我想请你帮我创建一个jsfiddle,但最近我无法编辑小提琴。

事实证明,我可以使用 match.funJSON 参数转换为 R 端的函数表达式。这实际上是 sapply 默认情况下所做的。我只是把 return 值弄错了。我的代码基于 lowess 示例,该示例 return 是一个包含 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); 
    });
});