2013-11-15 31 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

相关问题