Подтвердить что ты не робот

Как я могу взять попарно максимум между двумя векторами?

Предположим, что у меня два вектора в R, определяемые следующим образом.

a = c(3,3,5)
b = c(2,4,6)

Есть ли функция, которая даст мне попарный максимум между элементами a и элементами b, которые можно запустить внутри формулы?

Я попытался сделать, max(a,b), но он не получит желаемый результат.

Требуемый выход:

(3,4,6)

Фактический выход:

6
4b9b3361

Ответ 1

Максимальный максимум, pmax(a, b), даст 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

Существует также парный минимум

pmin(a, b)
# [1]  2  3  5 NA NA

pmin(a, b, na.rm = TRUE)
# [1] 2 3 5 0 1

И попарная сумма, которую я вытащил из этого вопроса/ответа, была очень полезна для меня время от времени:

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 
}