Suppose I have two vectors in R, defined as follows.
a = c(3,3,5) b = c(2,4,6)
Is there a function that will give me the pairwise maximum between the elements of a
and the elements of b
, which can be run inside a formula?
I tried to do, max(a, b)
but it does not get the desired output.
Desired Output:
C(3,4,6)
Actual output:
6
1 Answer. You can use the pmin() function to find the pairwise minimum value in two vectors. To find the pairwise maximum, you can use the pmax() function.
The pairwise maximum refer to the values that are largest between the vectors.
Pairwise maximum, pmax(a, b)
, will give c(3,4,6)
.
a <- c(3,3,5,NA,1) b <- c(2,4,6,0,NA) pmax(a, b) # [1] 3 4 6 NA NA pmax(a, b, na.rm = TRUE) # [1] 3 4 6 0 1
There is also a pairwise minimum
pmin(a, b) # [1] 2 3 5 NA NA pmin(a, b, na.rm = TRUE) # [1] 2 3 5 0 1
And a pairwise sum, which I pulled from this question/answer has been very useful to me at times:
psum(a, b) # == a + b # [1] 5 7 11 NA NA psum(a, b, na.rm = TRUE) # [1] 5 7 11 0 1 psum(c(-1, NA, 4), c(0, NA, NA)) # [1] -1 NA NA psum(c(-1, NA, 4), c(0, NA, NA), na.rm = TRUE) # [1] -1 NA 4 psum <- function(..., na.rm = FALSE) { dat <- do.call(cbind, list(...)) res <- rowSums(dat, na.rm = na.rm) idx_na <- !rowSums(!is.na(dat)) res[idx_na] <- NA res }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With