矢量化R函数产生直方图集

时间:2017-09-20 06:00:19

标签: r function plot histogram

我有一个矢量化R函数(见下文)。在每次运行时,函数绘制两个直方图。我的目标是当参数<div class="center"> <canvas id="convas" style="background: grey" width="300" height="300"> here will go report chart if you see this text it mean your browser dont support canvas! so update your browser. </canvas> </div>是一个向量时(参见下面的使用示例),该函数绘制n这些直方图的单独集合的长度(例如:如果n是一个向量长度n,我预计有两组直方图,即4个单独的直方图?

我尝试了以下但没有成功。有没有办法做到这一点?

2

1 个答案:

答案 0 :(得分:0)

Vectorize似乎是基于mapply,它本质上会在循环输入向量时多次调用函数。因此,更简单的方法可能只是在函数外部调用它

t.sim = Vectorize(function(n, es, n.sim){

  d = numeric(n.sim)
  p = numeric(n.sim)

  for(i in 1:n.sim){
    N = sqrt((n^2)/(2*n))
    x = rnorm(n, es, 1)
    y = rnorm(n, 0, 1)
    a = t.test(x, y, var.equal = TRUE)
    d[i] = a[[1]]/N
    p[i] = a[[3]]
  }
  # par(mfcol = c(2, npar))
  hist(p) ; hist(d) 
}, "n")

#inputs    
data <- c(30,300)
par(mfcol = c(2, length(data)))

t.sim(n = data, es = c(.1), n.sim = 1e3)