マトリックス内のすべての値の値、行インデックス、および列インデックスの両方の関数をマトリックスに適用して、変換されたマトリックスを取得したいと思います。例えば
mat<-matrix(c(1,2,3,4),2,2)
mat
[,1] [,2]
[1,] 1 3
[2,] 2 4
f<-function(x,i,j){x+i+j}
mat2 <- my.apply(f,mat)
mat2
[,1] [,2]
[1,] 3 6
[2,] 5 8
上記の例は説明を目的としたものであり、f
はるかに複雑になる可能性があります。
apply
余分な引数が処理される方法のため、仕事をしません。
apply(mat,1:2,f,seq_along(mat[,1]),seq_along(mat[1,]))
, , 1
[,1] [,2]
[1,] 3 4
[2,] 5 6
, , 2
[,1] [,2]
[1,] 5 6
[2,] 7 8
lapply
私は家族と一緒にどちらの方法も見つけることができません。for
ループはその仕事をすることができますが、それは効率的でもエレガントでもありません。助言がありますか?ありがとう