2016-09-22 4 views
0

ISはRでこの式を圧縮することが可能である:この表現をもっと小さく美しくするには?

for(j in 1:dim(data)[3]) data[,,j] <- f(data[,,j]) 
data

変数は、3Dアレイとfが2D行列を受け入れ、リターンします。私は行列の配列のすべての "行列"にfを呼び出す必要があります(実際には、dataはカラーチャネルの配列として格納されたイメージで、イメージをロードする関数から得て、fは単一チャネルを処理します)代替表現、私はこのコードを最適化する必要があります)。

答えて

3

この試してみてください:あなたはaを上書きしたくない場合は

a[] <- apply(a, 3, f) 

またはこれを:

replace(a, TRUE, apply(a, 3, f)) 

例えば、

f <- function(x) mean(x) * x^0 
a <- array(1:24, 2:4) 

aa <- replace(a, TRUE, apply(a, 3, f)) 

for(i in 1:4) a[,,i] <- f(a[,,i]) 

identical(a, aa) 
# [1] TRUE 
関連する問題