我有4个向量v1, a1, v2, a2
。我想编写一个可用于v1 and a1
或v2 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
答案 0 :(得分: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),]