如何找到高于0的最低值并返回矩阵行索引?

时间:2018-08-04 17:47:52

标签: r

我想找到除0以外的最低值,这是我的代码:

A = 600000000
B = 450000000
C = 300000000
D = 150000000
E = 90000000
F = 60000000
G = 30000000
H = 15000000
rpl.list <- matrix(c(A,B,C,D,E,F,G,H),ncol=1)
apply(rpl.list, 2, FUN = function(x) {min(x[x > 0])})

结果是:

[1] 1.5e+07

,值在rpl.list [8]中,我想获取“ 8”值,该值是该值的行号。如何获得? 我知道我可以循环rpl.list以找到与结果完全相同的值并返回i,如下所示:

for(i in 1:nrow(rpl.list)){
    if(rpl.list[i] == apply(rpl.list, 2, FUN = function(x) {min(x[x > 0])})){
        temp = i
    }
}

我想知道是否有一种简单的方法来返回行号

2 个答案:

答案 0 :(得分:4)

将小于或等于0的值替换为which.min后,我们可以使用NA

which.min(replace(rpl.list, rpl.list <= 0, NA))

答案 1 :(得分:1)

删除所有小于或等于零的值,然后对其余值进行排序。查找数据中与哪个最小值匹配的值,并为其索引。

import { interval } from 'rxjs';
import { takeWhile } from 'rxjs/operators';

ngOnInit() {
    interval(1000).pipe(
       takeWhile(() => this.alive)
    .subscribe(() => {
        this.today = Date.now();
    });