【问题标题】:How can I pass higher order functions via ocpu.rpc?如何通过 ocpu.rpc 传递高阶函数?
【发布时间】:2016-01-07 15:42:51
【问题描述】:

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

但是,我无法从 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,但最近我一直无法编辑小提琴。

【问题讨论】:

  • 无论我在哪里,这个 jsfiddle 编辑问题似乎都会间歇性发生。我想知道他们是否只是不保留 javascript 库加载顺序,并且它的工作时间有一半是偶然的。

标签: r macros packages opencpu


【解决方案1】:

事实证明,我可以使用 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); 
    });
});

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2018-03-07
    相关资源
    最近更新 更多