# pmax() and pmin() Functions in R

R is a programming language popular for its extensive array of built-in functions, particularly useful for data manipulation and statistical computing. Two such functions are pmax() and pmin(), which offer simple yet powerful means to identify and extract maximum and minimum values across vectors or datasets. This article will provide an in-depth guide to these functions, highlighting their usage, potential applications, and any considerations necessary when working with them.

### Basics of pmax() and pmin()

The pmax() and pmin() functions in R are used to calculate the parallel maxima and minima of input vectors, respectively. These functions compare values from multiple input vectors element by element, returning a new vector containing the maximum (for pmax()) or minimum (for pmin()) values from each comparison.

The basic syntax for pmax() and pmin() is as follows:

pmax(..., na.rm = FALSE)
pmin(..., na.rm = FALSE)

Where:

• ... represents one or more numeric vectors or arrays. If the lengths of the vectors are not the same, they will be recycled in a standard way to match the length of the longest vector.
• na.rm is a logical argument specifying whether NA values should be removed before the computation. If it’s set to FALSE (default), NA values are retained, meaning that if an NA value is present in any of the compared elements, the resulting vector will have NA for that element. If it’s TRUE, NA values are removed, and the max/min is calculated from the remaining non-NA elements.

### Using pmax() in R

The pmax() function is used to find the maximum value among each set of elements in the provided vectors. Here’s a basic example to illustrate its use:

# Define three vectors
a <- c(1, 4, 7)
b <- c(2, 3, 9)
c <- c(5, 6, 8)

# Use pmax to find the maxima
result <- pmax(a, b, c)

print(result)

In this example, pmax() compares the first elements from vectors a, b, and c (1, 2, and 5, respectively), and returns the maximum value (5). This process is repeated for the second and third elements, creating a new vector (result) containing the maximum values from each comparison.

### Using pmin() in R

Similar to pmax(), the pmin() function is used to find the minimum value among each set of elements in the provided vectors. Here’s how you can use pmin():

# Define three vectors
a <- c(1, 4, 7)
b <- c(2, 3, 9)
c <- c(5, 6, 8)

# Use pmin to find the minima
result <- pmin(a, b, c)

print(result)

In this case, pmin() compares the first elements from vectors a, b, and c (1, 2, and 5, respectively), and returns the minimum value (1). This process is repeated for the second and third elements, creating a new vector (result) containing the minimum values from each comparison.

### Handling NA Values with pmax() and pmin()

The pmax() and pmin() functions can handle NA values in your data. By default, if any compared elements contain an NA value, the resulting vector will also contain an NA value for that element. However, if you set na.rm = TRUE, the functions will ignore NA values and return the max/min from the remaining non-NA values.

Here’s an example demonstrating this functionality:

# Define vectors with NA values
a <- c(1, NA, 7)
b <- c(2, 3, NA)
c <- c(NA, 6, 8)

# Use pmax to find the maxima, with na.rm = FALSE
result_max <- pmax(a, b, c)

print(result_max)

# Use pmax to find the maxima, with na.rm = TRUE
result_max_rm <- pmax(a, b, c, na.rm = TRUE)

print(result_max_rm)

In this case, pmax() returns NA for the first and second elements when na.rm = FALSE, but ignores the NA values and returns the max of the remaining values when na.rm = TRUE.

The same principles apply to the pmin() function.

### Working with Different Length Vectors

If you provide vectors of different lengths to pmax() or pmin(), R will recycle the shorter vectors to match the length of the longest vector.

Here’s an example:

# Define vectors of different lengths
a <- c(1, 4, 7)
b <- c(2, 3)
c <- c(5)

# Use pmax to find the maxima
result <- pmax(a, b, c)

print(result)

In this example, pmax() recycles vectors b and c to match the length of vector a. The second element of b is compared with the third element of a, and the first (and only) element of c is compared with the second and third elements of a.

### Conclusion

The pmax() and pmin() functions in R offer a simple, efficient means to extract the maximum and minimum values across vectors or arrays, respectively. With the capacity to handle NA values and recycle shorter vectors, they provide a level of robustness that makes them invaluable tools in data analysis and manipulation in R.

Posted in RTagged