ベクトル化された論理 パート2
CoddyのRジャーニー「基礎」セクションの一部。レッスン 21/78。
AND や OR にベクトル化されたバージョンがあるのと同様に、NOT 演算子もベクトルの各要素に対して機能します。論理値のベクトルに ! を適用すると、各要素が個別に反転します。
passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed # FALSE TRUE FALSE TRUE各 TRUE は FALSE になり、各 FALSE は TRUE になります。これは、特定の条件を満たさない要素を見つけたい場合に特に便利です。
temperatures <- c(18, 25, 30, 15, 22)
# 20より上ではない気温を見つける
!(temperatures > 20) # TRUE FALSE FALSE TRUE FALSEベクトル化された NOT を & および | と組み合わせて、複雑なフィルターを構築できます。
ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)
# 参加できる条件: age >= 18 OR (18歳未満 AND 許可あり)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE覚えておきましょう:ベクトルを扱うときは単一の &、|、! を使い、単一の値を比較するときは二重の &&、|| を使います。
チャレンジ
簡単ベクトル化された NOT 演算子(!)を & および | と組み合わせて、複雑な要素ごとの論理条件を作成します。
次のベクトルが与えられています:
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)NOT 演算子を含むベクトル化された論理演算子を使用して、次の論理ベクトルを作成します:
- 60 以上ではない各スコアに対して
TRUEを格納するfailedという名前のベクトルを作成します attendedの反対(各値を反転)を格納するabsentという名前のベクトルを作成します- 出席しなかった、または宿題を提出しなかった各生徒に対して
TRUEを格納するat_riskという名前のベクトルを作成します - スコアが 60 以上で、かつ出席しなかった各生徒に対して
TRUEを格納するpassing_but_absentという名前のベクトルを作成します - 次の条件に該当する各生徒に対して
TRUEを格納するneeds_supportという名前のベクトルを作成します:(スコアが 50 未満)または(出席せず、かつ宿題を提出しなかった)
print() 関数を使用して、failed、absent、at_risk、passing_but_absent、needs_support をこの順番どおりに表示します。
自分で試してみよう
# 与えられたベクトル
scores <- c(45, 72, 88, 55, 91, 38, 67)
attended <- c(TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE)
submitted_homework <- c(TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE)
# TODO: 以下にコードを書いてください
# 1. 'failed' を作成 - scores が NOT >= 60 の場合に TRUE
# 2. 'absent' を作成 - attended の反対
# 3. 'at_risk' を作成 - NOT attended OR NOT submitted homework
# 4. 'passing_but_absent' を作成 - score >= 60 AND NOT attended
# 5. 'needs_support' を作成 - (score < 50) OR (NOT attended AND NOT submitted homework)
# 結果を表示する
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Rオンラインコンパイラ