2013-11-15 30 views
21

假設我在R中有兩個向量,定義如下。如何在兩個向量之間取最大值?

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

有沒有給我的a元素和b元素之間的成對的最大值,可以在公式中運行的功能?

我試過,max(a,b)但它沒有得到所需的輸出。

所需的輸出:

(3,4,6) 

實際輸出:

6 

回答

27

成對最大,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 
} 
+0

另外一個延伸,是這些工作超過2個矢量:'pmax(a,b,c)'等等或'do.call(pmax,list(a,b,c))'。 – lmo

相關問題