繁体   English   中英

查找R中具有最高值的向量

[英]Finding vectors with highest values in R

我有一系列向量:

aaa<-11
bbb<-23
ccc<-24
ddd<-26
eee<-89
fff<-89
ggg<-100

如何确定等于或超过第二大数字的所有变量? 在上面的示例中,理想的结果将是:

  ggg    eee    fff 
  100    89     89   

假设您有一个变量名列表:

n <- c("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg")

您可以获得所有它们的值:

vals <- unlist(mget(n))

然后,您可以找到第二个最大值:

(second.largest <- sort(vals, decreasing=TRUE)[2])
# eee 
#  89 

然后获取至少那么大的值:

vals[vals >= second.largest]
# eee fff ggg 
#  89  89 100 

如果您将变量按名称存储在列表l ,则可以跳过定义n而只需要执行vals <- unlist(l)

或者你也可以这样做

a = mget(c("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg"))
b = do.call(data.frame, a)
out = b[b %in% unique(t(b[order(b, decreasing =T)]))[1:2]]

#> out
#  eee fff ggg
#1  89  89 100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM