21
假設我在R中有兩個向量,定義如下。如何在兩個向量之間取最大值?
a = c(3,3,5)
b = c(2,4,6)
有沒有給我的a
元素和b
元素之間的成對的最大值,可以在公式中運行的功能?
我試過,max(a,b)
但它沒有得到所需的輸出。
所需的輸出:
(3,4,6)
實際輸出:
6
假設我在R中有兩個向量,定義如下。如何在兩個向量之間取最大值?
a = c(3,3,5)
b = c(2,4,6)
有沒有給我的a
元素和b
元素之間的成對的最大值,可以在公式中運行的功能?
我試過,max(a,b)
但它沒有得到所需的輸出。
所需的輸出:
(3,4,6)
實際輸出:
6
成對最大,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
而且成對總和,這是我從this question/answer拉,有時是非常有用的對我說:
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
}
另外一個延伸,是這些工作超過2個矢量:'pmax(a,b,c)'等等或'do.call(pmax,list(a,b,c))'。 – lmo