-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 に答える