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