【发布时间】:2017-09-21 03:07:42
【问题描述】:
我有一个矢量化的 R 函数,可以生成一些直方图(如下)。我想在其中一个直方图中添加一个mtext()(请在下面找到它)。
问题
但我希望mtext() 中的文本根据参数n 是长度> 1 的向量还是参数es 是长度> 1 的向量来更改。
在我的代码中,我使用以下代码没有成功:
txt = if(length(n) > 1) "Group Sample Size = " else if(length(es) > 1) "Effect Size = " else "Group Sample Size = "
mtext(paste0(txt, input), 3) [请在下面找到这些]
这是我完整的 R 代码:
p.es = function(n, es, n.sim){
input = if(length(n) > 1) n else if(length(es) > 1) es else n
t.sim = Vectorize(function(n, es){
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]] }
txt = if(length(n) > 1) "Group Sample Size = " else if(length(es) > 1) "Effect Size = " else "Group Sample Size = "
hist(p) ; mtext(paste0(txt, input), 3) ## Here I need help!!!!
hist(d)
}, c("n", "es"))
par(mfcol = c(2, length(input)), xpd = NA)
invisible(t.sim(n, es)) }
# Example of use:
p.es(n = 20, es = c(.1, .2), n.sim = 20) # Here I expect the mtext to show "Effect Size = "
# but it doesn't why?
【问题讨论】:
-
当
input是具有2 个或更多元素的向量时,您的mtext调用将在同一位置打印多个字符串。例如Effect size = 0.1和Effect size = 0.2是重叠的。 -
@DamianoFantini,是的,但是你建议如何解决这个问题?