Я хотел бы применить к матрице функцию как значения, индекса строки и индекса столбца для каждого значения в матрице, так и получить преобразованную матрицу. НапримерR применить к матрице функцию столбцов и индекс строки
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
может выполнять эту работу, но он не будет эффективным и элегантным. Любые предложения? Благодаря
Если функция векторизации то 'F (мат, ряд (мат), Col (мат))' должна работать – mnel