6

私は数値ベクトルを持っています:

p = c(0.69, 0.43, 0.72, 0.62, 0.29, 0.7)

値を制限値 (0.5 など) と比較したいと考えています。値がカットオフ以上の場合、結果は 1 になります。0.5 未満の値は 0 になります。

を試しifelseましたが、エラーになります:

newvector = rep(0, length(p))
newvector = ifelse(p >= 0.5, newvector = 1, newvector = 0)
# Error in ifelse(p >= 0.5, newvector = 1, newvector = 0) : 
#   unused arguments (newvector = 1, newvector = 0)
4

4 に答える 4

12

newvector事前に作成する必要はなく、引数として使用するとifelseエラーが発生します。

これを試して...

newvector <- ifelse( p>=0.5 , 1 , 0 )

しかし、それをベクトル化するだけでさらに良い...

newvector <- as.integer( p >= 0.5 )
于 2013-03-22T11:16:37.823 に答える
5

使用するだけです:

newvector <- ifelse(p>=0.5,1,0)

の 2 番目と 3 番目の引数はifelse式ではなく、返される値です。

于 2013-03-22T11:14:54.887 に答える
2

findIntervalこの特定のケースにも使用できます。

findInterval(p, .5)
于 2013-03-22T11:18:34.400 に答える
2

この場合、newvector<-round(p)の代わりに使用できますifelse

于 2013-03-22T11:21:24.587 に答える