私は2つのベクトルを持っています:
a<-rep(1:2,100)
b<-sample(a)
a
の各値を の対応する値と比較b
し、次のことを行う ifelse 条件が必要です。
if a>b 1
if a<b 0
if a=b sample(1:2,length(a),replace=T)
最初の 2 つは次のように実行できます。
ifelse(a>b,1,0)
a
しかし、とb
が等しいケースを組み込む方法がわかりません。
私は2つのベクトルを持っています:
a<-rep(1:2,100)
b<-sample(a)
a
の各値を の対応する値と比較b
し、次のことを行う ifelse 条件が必要です。
if a>b 1
if a<b 0
if a=b sample(1:2,length(a),replace=T)
最初の 2 つは次のように実行できます。
ifelse(a>b,1,0)
a
しかし、とb
が等しいケースを組み込む方法がわかりません。
別のifelseを追加するのはどうですか:
ifelse(a>b, 1, ifelse(a==b, sample(1:2, length(a), replace = TRUE), 0))
この場合、a>b の場合は値 1 を取得し、a が b と等しい場合は 1 または 2 ( sample(1:2, length(a), replace = TRUE)
)、そうでない場合 (したがって a は b よりも小さい必要があります) は値 0 を取得します。
あなたの質問にはあいまいさがあります。すべてのインデックスに異なるランダム値が必要ですか、a==b
それともすべてのインデックスに 1 つのランダム値が必要ですか?
@Rob による回答は、2 番目のシナリオで機能します。最初のシナリオでは、次のことを避けることをお勧めしますifelse
:
u<-rep(NA,length(a))
u[a>b] <- 1
u[a<b] <- 0
u[a==b] <- sample(1:2,sum(a==b),replace=TRUE)