Las funciones max, min, pmax y pmin en R

Introducción a R Funciones matemáticas
Las funciones max, min, pmax y pmin en R

R proporciona varias funciones para buscar valores máximos y mínimos. max y min devolverán el valor máximo y mínimo de un único vector, respectivamente, mientras que pmax y pmin devolverán los valores máximo y mínimo de varios vectores en paralelo.

max()

La función max devuelve el máximo del vector de entrada. Sólo devuelve un valor.

# Vector de ejemplo
x <- c(45, 12, 12, 15, 61, 56)

# ¿Cuál es el máximo?
max(x)
61

Sin embargo, si el vector contiene un valor omitido (NA), la función devolverá un NA.

# Vector de ejemplo
x <- c(45, 12, 12, NA, 15, 61, 56)

max(x)
NA

Si quieres evitarlo, puedes establecer el argumento na.rm de la función como TRUE, de modo que los valores que falten se eliminarán antes de obtener el valor máximo.

# Vector de ejemplo
x <- c(45, 12, 12, NA, 15, 61, 56)

max(x, na.rm = TRUE)
61

max(c(Inf, NA)) es NA, a pesar de que el máximo valor posible de un NA sea Inf.

min()

La función min es lo contrario de max, ya que devuelve el valor mínimo del vector de entrada. Esta función se utiliza de la misma manera que la otra y también proporciona un argumento llamado na.rm que se puede establecer en TRUE para eliminar los valores que faltan, si es que hubiese alguno.

# Vector de ejemplo
x <- c(45, 12, 12, 15, 61, 56)

# ¿Cuál es el mínimo?
min(x)
12

pmax()

La función pmax es similar a max pero en lugar de un vector puede tomar varios y devolverá el valor máximo entre los valores de cada índice de los vectores. A modo ilustrativo, en el siguiente ejemplo, el primer valor devuelto es 52 porque es el máximo entre 45, 15 y 52, el segundo valor devuelto es 35 porque es el máximo entre 12, 35 y 12, y así sucesivamente.

# Vector de ejemplos
x1 <- c(45, 12, 12, 15, 61, 56)
x2 <- c(15, 35, 81, 23, 45, 24)
x3 <- c(52, 12, 41, 35, 17, 16)

pmax(x1, x2, x3)
52 35 81 35 61 56

Si la longitud de los vectores es diferente la función devolverá un vector de la longitud del vector mayor y se reciclarán los vectores más pequeños. En el ejemplo siguiente esto implica que en el quinto elemento, la función buscará el valor máximo entre 61, 15 (reciclado, primer valor de x1) y 17 y en el último elemento la función comparará 56, 35 (reciclado, segundo valor de x2) y 52 (reciclado, primer valor de x3).

# Vector de ejemplos
x1 <- c(45, 12, 12, 15, 61, 56)
x2 <- c(15, 35, 81, 23)
x3 <- c(52, 12, 41, 35, 17)

pmax(x1, x2, x3)
52 35 81 35 61 56
Warning message:
In pmax(x1, x2, x3) : an argument will be fractionally recycled

Ten en cuenta que aparecerá un mensaje de advertencia si la longitud de los vectores más pequeños no es múltiplo del vector más grande.

pmin()

La función pmin es la misma que pmax pero devolverá los valores mínimos elemento a elemento para cada índice de los vectores de entrada. En el ejemplo de abajo el primer valor es 15 porque es el mínimo entre 45, 15 y 52, el segundo valor es 12 porque es el mínimo entre 12, 35 y 12 y así sucesivamente.

# Vector de ejemplos
x1 <- c(45, 12, 12, 15, 61, 56)
x2 <- c(15, 35, 81, 23, 45, 24)
x3 <- c(52, 12, 41, 35, 17, 16)

pmin(x1, x2, x3)
15 12 12 15 17 16

Esta función se comportará igual que pmax si las longitudes de los vectores de entrada son diferentes.