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

时间:2015-06-26 15:55:51

标签: r

我有一系列载体:

re.sub(r'(?<=\d)\.?0+\b', "", my_string)
#Problem: It shorts 10 to 1 (for example)

re.sub(r'(?<=\d)\.0+\b', "", my_string)
#Problem: It doesn't short 2.40 (for example)

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

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

2 个答案:

答案 0 :(得分:3)

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

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)

答案 1 :(得分:2)

或者你也可以这样做

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