2016-01-07 40 views
0

我试图通过使用ocpu.rpc将函数传递给我的opencpu应用程序中的某个函数。我知道 API可以处理它,因为我已经使用API test facility与基地R(等)中的sapply函数进行了测试。如何通过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参数转换为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); 
    }); 
});