Rmarkdown中的矩阵问题

时间:2017-06-12 12:38:18

标签: r

我在r中创建了一个计算必要重复次数的函数。我的问题是我需要在矩阵中为delta和sigma设置一些值,然后进入函数。

required.replicates <- function(delta, sigma, z.alpha = 1.959964, 
  z.beta=0.8416212)
{
r.exact <- (2*(z.alpha + z.beta)^2)*(sigma/delta)^2
result <- list(delta, sigma, z.alpha, z.beta)
names(result) <- c("delta", "sigma", "z.alpha", "z.beta")
r.integer <- ceiling(r.exact)
replicate.output <- list(result, r.exact, r.integer)
names(replicate.output) <- c("result","r.exact","r.integer")
return(replicate.output)
}

sigma.vec <- c(2,4,6,8,10,12)
delta.vec <- c(1,2,5,8,10)
sigma.mat <- matrix(rep(sigma.vec,times=length.s), nrow =length.s, 
   byrow=TRUE)
delta.mat <- matrix(rep(delta.vec,times=length.s), ncol = length.s, 
   byrow=FALSE)
required.replicates(delta= delta.mat, sigma=sigma.mat)

sigma / delta中的错误:不一致的数组

我不知道为什么我收到错误消息。

2 个答案:

答案 0 :(得分:1)

sigma.vecdelta.vec的长度不同,因此sigma.matdelta.mat的维度不同,因此sigma.mat/delta.mat会产生错误。

答案 1 :(得分:0)

首先,您似乎错过了length.s,您用它来存储sigma.vecdelta.vec的长度。我会把长度保存为单独的变种:

length.s <- length(sigma.vec)
length.d <- length(delta.vec)

您的主要问题non-conformable arrays似乎源于sigma.vecdelta.vec长度不同的事实,这导致不同的matrix维度。向delta.vec添加一个元素或从sigma.vec中删除一个元素,我认为您的函数应该可以正常工作。