我有一个矢量化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
答案 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)