我需要在delta.vec
函数中添加sigma.vec
和required.replicates
值,并将它们存储在我的practice1
矩阵中。
但我得NULL
。
sigma.vec <- c(2,4,6,8,10,12)
delta.vec <- c(1,2,5,8,10)
practice1 <- matrix(0, nrow=length(delta.vec), ncol=length(sigma.vec))
required.replicates <- function(delta, sigma, z.alpha = 1.959964, z.beta=0.8416212) {
for(i in 1:length(delta.vec)) {
for(j in 1:length(sigma.vec))
practice1[i,j] <- ceiling((2*(z.alpha + z.beta)^2)* (sigma[j]/delta[i])^2)
}
}
practice1 <- required.replicates(delta=delta.vec, sigma=sigma.vec)
practice1
答案 0 :(得分:2)
这更有效:
required.replicates <- function (delta, sigma, z.alpha, z.beta) {
oo <- 1 / outer(delta, sigma, "/")
ceiling(oo ^ 2 * 2 * (z.alpha + z.beta) ^ 2)
}
practice1 <- required.replicates(delta.vec, sigma.vec, 1.959964, 0.8416212)
修复原始代码
required.replicates <- function(delta, sigma, z.alpha = 1.959964, z.beta=0.8416212) {
oo <- matrix(0, nrow=length(delta), ncol=length(sigma))
for(i in 1:length(delta))
for(j in 1:length(sigma))
oo[i,j] <- ceiling((2*(z.alpha + z.beta)^2)* (sigma[j]/delta[i])^2)
return(oo)
}
practice1 <- required.replicates(delta.vec, sigma.vec, 1.959964, 0.8416212)
谢谢!还有一个问题,如果我希望矩阵中的任何值小于3,使其值为3,任何大于1000的值作为NA返回我应该添加哪些内容?
practice1[practice1 < 3] <- 3
practice1[practice1 > 1000] <- NA
practice1