2017-12-01 14 views
0

によって接続された条件の1つとしてis.nullを含んでいる場合、matの変数はNULLと初期化されています。私は特定の条件の下でマットを埋める反復プロセスを持っています。このプロセスの後、私はmatがある数以上の行を持っているかどうかをチェックし、そうでない場合は何かを実行します。R:ステートメントがOR

私は、この条件を書くには、理想的には、is.null(mat) | nrow(mat) < nのようなものを書くためのきれいな方法を探しています。 is.null(mat)TRUEでORで接続されている場合は、文全体がTRUEである必要がありますが、nrow(mat) < nはエラーとなります。

私はそれを2つの条件に書き換え、両方の場所に# do somethingコードをコピーすることで回避できますが、これを行うにはよりクリーンな方法がありますか?

mat = NULL 

for(i in 1:10){ 
    if(runif(1) > 0.8){ 
    mat = rbind(mat, c(1,2,3)) 
    } 
} 

if(is.null(mat)){ 
    # do something... 
} else if(nrow(mat) < 3){ 
    # do something... 
} 

答えて

3

あなたは||ある|の短絡のバージョンを使用することができます。ヘルプから

is.null(mat) || nrow(mat) < n 

&と& &は、論理示し、かつ| ||論理和を示す。より短い形式は、算術演算子とほとんど同じ方法で要素ごとの比較を実行します。長いフォームでは、各ベクトルの最初の要素のみを左から右に評価します。評価は、結果が決定されるまで行われます。より長い形式はプログラミングフローに適しており、通常はif節で優先されます。

関連する問題