2016-01-07 39 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); 
    }); 
});