0
に渡します。これは、Rには、3Dim配列とターゲット値が与えられた関数を書こうとしています。 x、y点ごとにz方向のターゲットに最も近い値。ターゲットの所定のマージン内に値がない場合、マトリックスはそのポイントでNAでなければなりません。Rは、すべてのx、y点のz方向に最も近い値のインデックスを3dimの配列
私は動作する機能を書いたが、あまりにも遅く、グリッドのデータグリッドにはdim(x) = c(586,538,100)
と処理したい。私は配列x、yのインデックスを経由するループの2つを回避する方法を知りません。 apply
使用
x <- seq(6.5,13,len=90)
dim(x) <- c(3,3,10)
get.zvals <- function(dens_grid,layer,margin=0.2){
out <- dens_grid[,,1]
out[] <- NA
for(i in 1:dim(out)[1]){
for(j in 1:dim(out)[2]){
x <- dens_grid[i,j,]
if( sum(!is.na(x)) >2
& sum(x[x<(layer+margin) & x>(layer-margin)],na.rm=TRUE) >=1){
out[i,j] <- which.min(abs(x-layer))
}
}
}
return(out)
}
y <- get.zvals(x,12.06)
はそんなに@fanliありがとうございます。私の機能の半分の時間でうまく動作します。私は適用機能を認識していましたが、私はそれを使用することに経験がありません。私はこれを理解するために年齢が必要でした。本当にありがとう。 – Atomhamster