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度を超えない(NOT above 20)温度を見つける
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

ベクトル化された NOT を & および | と組み合わせて、複雑なフィルターを構築できます:

ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)

# 参加可能条件: 年齢が18歳以上、または(18歳未満かつ許可がある場合)
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. (スコアが 50 未満) または (出席しておらずかつ宿題を提出していない) 生徒に対して TRUE を格納する、needs_support という名前のベクトルを作成します。

print() 関数を使用して、failedabsentat_riskpassing_but_absentneeds_support をこの通りの順番で表示してください。

チートシート

NOT 演算子 (!) は、ベクトルの各要素に対して個別に動作し、それぞれの論理値を反転させます:

passed <- c(TRUE, FALSE, TRUE, FALSE)
!passed  # FALSE TRUE FALSE TRUE

条件を満たさない要素を見つけるには、! を使用します:

temperatures <- c(18, 25, 30, 15, 22)
!(temperatures > 20)  # TRUE FALSE FALSE TRUE FALSE

ベクトル化された NOT を &| と組み合わせて、複雑なフィルタを作成できます:

ages <- c(16, 25, 18, 30, 14)
has_permission <- c(TRUE, TRUE, FALSE, TRUE, TRUE)

# 参加可能な条件: 年齢が 18 以上、または (18 未満かつ許可がある)
can_participate <- ages >= 18 | (ages < 18 & has_permission)
# TRUE TRUE FALSE TRUE TRUE

注意:ベクトルには単一の &|! を使用し、単一の値には二重の &&|| を使用してください。

自分で試してみよう

# 与えられたベクトル
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' を作成 - スコアが 60 以上ではない場合に TRUE

# 2. 'absent' を作成 - attended の逆

# 3. 'at_risk' を作成 - 出席していない、または宿題を提出していない

# 4. 'passing_but_absent' を作成 - スコアが 60 以上、かつ出席していない

# 5. 'needs_support' を作成 - (スコアが 50 未満) または (出席しておらず、かつ宿題を提出していない)

# 結果を出力
print(failed)
print(absent)
print(at_risk)
print(passing_but_absent)
print(needs_support)
quiz icon腕試し

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

基礎のすべてのレッスン