【发布时间】:2023-03-18 12:18:01
【问题描述】:
我有一个矢量化的 R 函数(见下文)。每次运行时,该函数都会绘制两个直方图。我的目标是当参数n 是一个向量时(参见下面的使用示例),该函数绘制n 的这些直方图的单独集合的长度(例如:如果n 是一个长度为2 的向量,我期望两组直方图,即 4 个单独的直方图)?
我尝试了以下但没有成功。有没有办法做到这一点?
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, length(n)))
hist(p) ; hist(d)
}, "n")
# Example of use:
t.sim(n = c(30, 300), es = .1, n.sim = 1e3) # `n` is a vector of `2` so I expect
# 4 histograms in my graphical device
【问题讨论】:
-
它是一个向量,但是函数以某种方式运行输入两次,因此每次迭代中长度 n 为 1,您可以通过在函数内部打印 length(n) 来测试它,并且您还可以得到两组图1.
-
我认为没有比将
par(mfrow = c(2, 2)放在函数之外并在函数中删除它更简单的方法来解决这个问题。通过更改,它将始终为 1