我想在矩阵上应用矩阵中每个值的值、行索引和列索引的函数,并获得转换后的矩阵。例如
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
完成这项工作,但它既不高效也不优雅。有什么建议么?谢谢