2017-05-12 8 views
0

同じ次元の合成ベクトルを維持しながら2つのベクトルをマージしたいが、特定の基準を満たす場合は値を上書きする。特定の値だけを保持するRのベクトルの結合

この場合、TとFの値の2つのベクトルがあります。任意の値を扱うことができるコードを取得するにはいいだろうな

C <- c(T T T F) 

ことを、私はそれらをマージし、それがベクターのいずれかで表示された場合はTRUEを保持ベクトルを取得したいのは、

A <- c(T F T F) 
B <- c(T T F F) 

を言ってみましょう(TRUEだけでなく)必要です。

約2時間を費やしてこの問題を解消しようとすると、コミュニティの意見が本当にうれしく思います。

答えて

1

これは簡単です。ちょうどA | Bです。

+1

とそれに対応する「A&B」。ありがとう。 – Kanak

+0

とてもいいです。論理演算子をマスターするのはかなり役に立ちます。今週末に何をやるか分かっていると思う。 – trijamms

1

ブール演算の使用はどうですか? TRUE値を保持するには、

> !!(A+B) 
[1] TRUE TRUE TRUE FALSE 

またはFALSE値、

> !!(A*B) 
[1] TRUE FALSE FALSE FALSE 

を保持するためにやってみたいことがあり、この解決策ではないタイプに対処することはできませんので、しかし、これはあなたが正確に何をしたいではないかもしれませんブール値。


MattTyersの答えは、2進数を10進数に変えるブール演算を行うので、私より単純です。

+0

ありがとうございました。それは動作しますが、私はなぜそれがわかりません。私はちょうど何が起こるかを見るために(A + B)を試みました、そして、それはほとんど同じことをしましたが、0と1を出力しました。 1つのNOT文(!)を使用すると、最初はすべての0と1をブール値に変換しましたが、それらを否定しました。そしてあなたが提案した!!(A + B)で、私は私が探していたものを手に入れました。なぜ、 "!"ブール値を生成するために必要なのか?私はあまり時間を取っていないことを願っています。ちょっと興味があるんだけど。ありがとう! – trijamms

+0

@trijamms。 「なぜ」、あるいはそれ以上の「方法」の問題は、実際には答えが簡単ではありません。しかし、0を除いた任意の数はTRUEとみなされるので、 '!1'のような数値を否定すると、結果はブール演算になります。その結果はブール値にしかなりません。次に、 '!! 1'は'!1'( 'FALSE')を否定し、' TRUE'を返します。 – Kanak

+0

ありがとうTnerual。それは実際に意味をなさない。 – trijamms

関連する問題