2017-06-12 4 views
0

必要な複製の数を計算する関数をrで作成しました。私の問題は、デルタとシグマの値を行列に入れてから関数に入れる必要があることです。シグマ/デルタにおけるRmarkdownでの行列の問題

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) 

エラー:非適合配列

私は、エラーメッセージが出てい理由はわかりません。

+0

あなたは何をしたいですか? 'sigma.mat'は'(10 * 6) 'の行列ですが、' delta.mat'は '(5 * 10)'なので、 'sigma.mat/delta.mat'が生成するものは分かりません。 – herbaman

+0

申し訳ありません。私がする必要があるのは、sigma.vecとdelta.vecのすべての値をrequired.replicatesの式に入れることです。 –

答えて

1

sigma.vecdelta.vecは異なる長さを有するので、sigma.matdelta.matは異なる寸法を有するので、sigma.mat/delta.matはエラーを生成します。

+0

割り当てでは、sigma.vecの行とdelta.vecの列を繰り返すことによって、これらの30の可能な組み合わせがカバーされます –

0

最初に、あなたはsigma.vecdelta.vecの両方の長さを保存するために使用しているlength.sが見つからないようです。私は別のVARSとして長さを救う:

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

あなたの主な問題non-conformable arrayssigma.vecdelta.vecが異なるmatrix寸法につながる異なる長さ、であるという事実に由来するように見えます。もう1つの要素をdelta.vecに追加するか、sigma.vecから1つを削除してください。あなたの機能はうまくいくはずです。

関連する問題