Pregunta Cómo construir una llamada de función a pmax desde las columnas de una matriz


Quiero usar pmax para calcular el maximium de fila de una matriz A:

A = matrix(sample(1:20),10,2)
pmax(A[,1],A[,2])

esto funciona bien Pero el problema es que no sé el tamaño de A, así que la llamada a pmax debería ser capaz de dividir la matriz por columnas y suministrar cada columna como un argumento. ¿como hacer eso? Por ejemplo, puedo en la próxima instancia tener

A = matrix(sample(1:20),5,4)

Pero no quiero tener que reescribir a mano todo el tiempo para

pmax(A[,1],A[,2],A[,3],A[,4])

de hecho, no puedo porque el tamaño de A Se desconoce antes del inicio del programa.


5
2018-05-17 15:21


origen


Respuestas:


Puedes usar do.call:

do.call(pmax, as.data.frame(A))

7
2018-05-17 15:37



Solo usa apply con max en lugar...

apply( A , 1 , max )
# [1]  6 11 20 18 17

pmax(A[,1],A[,2],A[,3],A[,4])
# [1]  6 11 20 18 17

2
2018-05-17 15:29