ベクトル化された論理 パート1
CoddyのRジャーニー「基礎」セクションの一部 — レッスン 20/78。
Rには、AND演算子とOR演算子の2つのバージョンがあります。これまでに、単一の値を扱う&&と||について学びました。次に、ベクトル化された対応する演算子である&と|(記号1つ)について見ていきましょう。
主な違いは、複数の値を扱う際に、& と | が値を要素ごとに比較することです:
a <- c(TRUE, TRUE, FALSE, FALSE)
b <- c(TRUE, FALSE, TRUE, FALSE)
a & b # TRUE FALSE FALSE FALSE
a | b # TRUE TRUE TRUE FALSE各位置は独立して比較されます。最初の位置では、a と b の両方が TRUE であるため、a & b は TRUE を返します。2番目の位置では、a は TRUE ですが b は FALSE であるため、a & b は FALSE を返します。
これは比較演算子と組み合わせることで、非常に強力になります:
scores <- c(85, 42, 91, 67, 55)
# 50から80の間のスコアを確認する
scores >= 50 & scores <= 80 # FALSE FALSE FALSE TRUE TRUE結果は、どの要素が両方の条件を満たしているかを示す論理値のベクトルになります。この要素ごとの動作は、Rでのデータのフィルタリングや分析に不可欠です。
チャレンジ
簡単ベクトル化された AND (&) および OR (|) 演算子を使用して、ベクトルに対して要素ごとの比較を実行します。
以下のベクトルが提供されています:
temperatures <- c(18, 25, 32, 15, 28, 35, 22)
humidity <- c(45, 80, 60, 30, 75, 85, 50)ベクトル化された論理演算子を使用して、以下の論理ベクトルを作成してください:
- 20以上 かつ 30以下の各温度に対して
TRUEを格納する、comfortable_tempという名前のベクトルを作成します。 - 70より大きい各湿度に対して
TRUEを格納する、high_humidityという名前のベクトルを作成します。 - 温度が20から30の間(両端を含む) かつ 湿度が60以下の各日に対して
TRUEを格納する、pleasant_dayという名前のベクトルを作成します。 - 温度が30より大きい または 湿度が80より大きい各日に対して
TRUEを格納する、extreme_weatherという名前のベクトルを作成します。 - 温度が18未満 または (温度が30より大きく かつ 湿度が70より大きい)各日に対して
TRUEを格納する、stay_insideという名前のベクトルを作成します。
print() 関数を使用して、comfortable_temp、high_humidity、pleasant_day、extreme_weather、stay_inside をこの順番で表示してください。
自分で試してみよう
# 提供されたベクトル
temperatures <- c(18, 25, 32, 15, 28, 35, 22)
humidity <- c(45, 80, 60, 30, 75, 85, 50)
# TODO: 以下にコードを記述してください
# 1. comfortable_temp を作成: temp >= 20 かつ temp <= 30 のときに TRUE
# 2. high_humidity を作成: humidity > 70 のときに TRUE
# 3. pleasant_day を作成: temp が 20-30 かつ humidity <= 60 のときに TRUE
# 4. extreme_weather を作成: temp > 30 または humidity > 80 のときに TRUE
# 5. stay_inside を作成: temp < 18 または (temp > 30 かつ humidity > 70) のときに TRUE
# 結果を出力する
print(comfortable_temp)
print(high_humidity)
print(pleasant_day)
print(extreme_weather)
print(stay_inside)このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。