2017-05-12 13 views
1

で使用していますが、この質問の回答を探しましたが、検索バーに質問が正しく表示されているかどうかはわかりません。私は2つのベクトルに基づいて論理条件付きif文またはifelse文を作成したいと思います。ベクトル条件付きのif/ifelseステートメントをR

ifelse(Vector1 == c(T,T,T),"Combo1","Combo2") 

私は「ベクトル1」と呼ばれるベクトルを作成しました:

ここでは、コードの短縮バージョンです。その値は現在[T T F]です。したがって、上記の場合、出力値 "Combo2"を出力したいと思います。代わりに、私は[Combo1 Combo1 Combo2]のベクターを取得しています。だから私はそれがベクトルにこれらの値を渡しているが、私は単一の "コンボ"値を取得する単一のTRUEまたはFALSE値を渡すifelseステートメントが欲しいです。

[T/F T/F T/F]の8つの組み合わせがありますので、これらのifelseステートメントのいくつかを一緒にネストしようとしていますが、簡単に始めると思いました。

私はif文も使ってみましたが、それも私にとってはうまくいきませんでした。

何か助けていただきありがとうございます。

+2

'?ifelse'から:"テストと同じ形の値を返します "。そのため、Vector1と同じ形で返されたベクトルが得られます。 – neilfws

+0

'test'は論理ベクトルです。それは 'Vector1'と同じ形ではありません。' Vector1 == c(T、T、T) 'と同じ形であり、'#[1] TRUE TRUE FALSE'という形です。 (確かに、それぞれが真である論理ベクトルのテストはベクトルそのものになりますが、 'test'オブジェクトはVector1ではなく、 '=='演算子からの結果です。 –

答えて

5

文の場合、それは値を返しますので、あなたはまた、通常の操作を行うことができます。

my_result = if(all(Vector1 == c(T,T,T))) {"Combo1"} else {"Combo2"} 

ifelse関数がベクトル化された条件文のために作られています。

標準if文を使用すると、標準ifが1つの条件のみを評価するため、潜在的なあいまいさや誤解を取り除くことができます。

+0

あなたの助けに感謝します。私はRにはかなり新しいので、そのすべてのことについてもっと知る必要があります。 – trijamms

関連する問題