使用 OpenCPU 的 t 检验

t-test using OpenCPU

我尝试使用 OpenCPU 在 R 中使用 t-test,如下所示 -

<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="//cdn.opencpu.org/opencpu-0.4.js"></script>

ocpu.seturl("//public.opencpu.org/ocpu/library/stats/R")

var x = [1,2,3,4,5,6,7,8,9,10];
var y = [7,8,9,10,11,12,13,14,15,16,17,18,19,20];
// call R function: stats::t.test
var req = ocpu.rpc("t.test",{
    "x" : x,
    "y" : y
}, function(output){
    alert("t.test equals: " + output);
});

//optional
req.fail(function(){
    alert("R returned an error: " + req.responseText);
});

但是我遇到了这个错误

我无法理解哪里出错了

ocpu.rpc 函数是一个 shorthand,它将输出检索为 JSON。但是,t.test 对象没有 JSON 表示。因此,您可以使用 ocpu.call 并检索例如会话 [fiddle]:

的控制台输出
var req = ocpu.call("t.test",{
    x : x,
    y : y
}, function(session){
  session.getConsole(function(outtxt){
      $("code").text(outtxt);
  });
});

如果您想要实际数据(例如 p 值),我建议您创建一个带有包装函数的简单 R 包,returns 包含您感兴趣的数据的列表:

my_ttest <- function(x, y){
  out <- t.test(x,y)
  list(
    n1 = length(x),
    n2 = length(y),
    p = out$p.value
  )
}

您将能够像上面那样使用 ocpu.rpc 调用此函数,因为列表可以直接映射到 JSON。请注意,您可以使用 github webhook 在 public 演示服务器上轻松部署自己的包。