返回r中的最后一个非零元素索引

时间:2015-05-17 08:26:41

标签: r

如果

List startCodonIndices = new ArrayList(); int index = 0; for (int i = 0; i + 3 < dnax.length(); i++) { index = dnax.indexOf("AUG", i); if (index != -1) { startCodonIndices.add(index); } List stopCodonIndices = new ArrayList(); int i2, i3, i4; for (int j = 0; j + 3 < dnax.length(); j++) { i2 = dnax.indexOf("UGA", j); System.out.println("i2: "+i2); if (i2 != -1) { stopCodonIndices.add(i2); } i3 = dnax.indexOf("UAA", j); System.out.println("i3: "+i3); if (i3 != -1) { stopCodonIndices.add(i3); } i4 = dnax.indexOf("UAG", j); System.out.println("i4: "+i4); if (i4 != -1) { stopCodonIndices.add(i4); } } for (int v = 0; v < startCodonIndices.size(); v++) { for (int h = 0; h < stopCodonIndices.size(); h++) { gene = dnax.substring((int)startCodonIndices.get(v), (int)stopCodonIndices.get(h)+3); jTextArea1.setText(gene+"\n"); }} #index为11

我需要a <- c(6,4,5,6,2,6,0,0,1,3,7,0,0)的列索引。

目的:

我需要将值重新分配给最后一个非零元素,在上面的例子中是7

保证向量7始终以a个连续的零结尾,其中N未知。

2 个答案:

答案 0 :(得分:5)

你可以尝试

 tail(which(a!=0),1)
 #[1] 11

答案 1 :(得分:0)

更健壮的版本还可以处理没有非零元素的情况:

max_nonzero_index <- function(a) {
   idx <- a != 0
   ifelse(any(idx), max(which(idx)), 0)
}

这里的约定是在没有非零元素时为索引返回0。