Menu
Coddy logo textTech

ベクトル化された論理 パート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

覚えておきましょう:ベクトルを扱うときは単一の &|! を使い、単一の値を比較するときは二重の &&|| を使います。

challenge icon

チャレンジ

簡単

ベクトル化された 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 演算子を含むベクトル化された論理演算子を使用して、次の論理ベクトルを作成します:

  1. 60 以上ではない各スコアに対して TRUE を格納する failed という名前のベクトルを作成します
  2. attended の反対(各値を反転)を格納する absent という名前のベクトルを作成します
  3. 出席しなかったまたは宿題を提出しなかった各生徒に対して TRUE を格納する at_risk という名前のベクトルを作成します
  4. スコアが 60 以上で、かつ出席しなかった各生徒に対して TRUE を格納する passing_but_absent という名前のベクトルを作成します
  5. 次の条件に該当する各生徒に対して TRUE を格納する needs_support という名前のベクトルを作成します:(スコアが 50 未満)または(出席せず、かつ宿題を提出しなかった

print() 関数を使用して、failedabsentat_riskpassing_but_absentneeds_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)
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Rオンラインコンパイラ