删除R中两个向量的最大值

时间:2013-07-30 07:47:01

标签: r

我有4个向量v1, a1, v2, a2。我想编写一个可用于v1 and a1v2 and a2的代码,以删除向量v1的最大值,并根据最大长度删除a1的元素值v1,此代码也适用于v2,它会移除最大值并删除a2中的相应值。我怎么能在R中这样做?我希望代码可以适用于任何其他类似的矢量。

    v1 = c(0.25, 0.25, 0.3, 0.3, 0.3, 5, 6, 6.5, 8, 8, 8)

    a1 = rep(1, length(v1))

    v2=unique(v1)

    a2 = c(2, 3, 1, 1, 1, 3)

我的愿望结果如下:

     > v1
     [1] 0.25 0.25 0.30 0.30 0.30 5.00 6.00 6.50
     > a1
     [1] 1 1 1 1 1 1 1 1
     > a2
     [1] 2 3 1 1 1
      > v2
     [1] 0.25 0.30 5.00 6.00 6.50

1 个答案:

答案 0 :(得分:2)

您可以单独为每个向量执行此操作:

v1[-which(v1==max(v1))]
a1[-which(v1==max(v1))]

但是将它们绑定在一起可能更有意义,因此您不必重复命令,例如:

cbind(v1,a1)[-which(v1==max(v1)),]

v2a2的过程相同:

cbind(v2,a2)[-which(v2==max(v2)),]

我还应该补充说,没有which语法略有不同可以做到这一点:

cbind(v1,a1)[!v1==max(v1),]
cbind(v2,a2)[!v2==max(v2),]