-2

我有 4 个向量v1, a1, v2, a2。我想编写一个代码,既可以用于两者,v1 and a1也可以删除v2 and a2向量的最大值,并根据最大值的长度v1删除 的元素,此代码也适用于删除最大值并根据 中的值删除。我怎样才能在 R 中做到这一点?我希望代码可以适用于像这样的任何其他向量。a1v1v2a2

    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
4

1 回答 1

2

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

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

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

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

v2和的过程相同a2

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

which我还应该补充一点,可以在没有稍微不同的语法的情况下做到这一点:

cbind(v1,a1)[!v1==max(v1),]
cbind(v2,a2)[!v2==max(v2),]
于 2013-07-30T07:58:47.830 回答