R:从每个列中挑选一个最大

  • 本文关键字:一个 挑选 r
  • 更新时间 :
  • 英文 :

a=c(1,4,5,7,3,3,NA)
b=c(2,7,3,NA,2,5,2)
d=c(2,7,5,NA,9,0,1)
dat=data.frame(a,b,d)

如何从每个列中挑选出最大一个,NA被忽略了?最后的结果是一个向量,它的结论是 7、7 和 9.获得这样的结果的代码是什么?

使用sapply遍历列。

sapply(dat, max, na.rm = TRUE)
# a b d
# 7 7 9

或者,如果您使用lapply它将返回一个列表。sapply可能有点不可预测,因为它调用lapply然后尝试简化结果。这意味着,如果输入类型发生变化(例如,其中一列是列表列),您可能会得到不同的输出(例如,列表而不是向量)。

如果要确保输出是向量并在不是这种情况时抛出错误,则可以使用vapply

vapply(
X = dat, 
FUN = max, 
FUN.VALUE = numeric(1), 
na.rm = TRUE
)
# a b d
# 7 7 9

使用 apply:

apply(dat, 2, max, na.rm = 1)
a b d 
7 7 9 
a=c(1,4,5,7,3,3,NA)
b=c(2,7,3,NA,2,5,2)
d=c(2,7,5,NA,9,0,1)
dat=data.frame(a,b,d)
sapply(dat, max, na.rm=TRUE)
a b d 
7 7 9 

最新更新