私は 3 つのデータセットを持っており、私の計算でどれだけの N が使用されたかを知りたいです。
データを次元 (nx、ny、ntsteps、ndatasets) の多次元配列に読み込みます。たとえば、より小さなサンプル データセットを使用します。
# nx ny nsteps ndatasets
dat = runif(20 * 30 * 100 * 3)
dim(dat) = c(20, 30, 100, 3)
> str(dat)
num [1:20, 1:30, 1:100, 1:3] 0.1834 0.8537 0.0672 0.0734 0.8078 ...
関数を利用してcor
この関数を作成し、N の数を計算します。
cor_withN <- function(...) {
res <- try(cor.test(...)$parameter+2, silent=TRUE)
ifelse(class(res)=="try-error", NA, res)}
次に、 apply が行列だけでなく多次元配列でも機能するという事実を利用します。
apply を使用して、すべての x、y、z トリプルを反復処理します。
result = apply(dat, c(1,2), function(x) cor_withN(x[,1], x[,2],x[,3]))
> str(cor_result)
logi [1:20, 1:30] NA NA NA NA NA NA ..
最後の行がうまくいった場合、 NA NA NA NA を取得することで何かが間違っています! それから
str(cor_result)
する必要があります
logi [1:20, 1:30] 100 100 100 100 100 ..(nsteps)
なぜ私がNAを取得しているのか、またはそれを行う別の方法はありますか?
2つのデータセットでテストしたところ、うまくいきました!
cor_result = apply(dat, c(1,2), function(x) cor_withN(x[,1], x[,2]))
> str(cor_result)
num [1:20, 1:30] 100 100 100 100 100 100 100 100 100 100
だから問題は私が追加したときですx[,3]
!! ありがとう