Menu
CoddyTech

Logic vector hóa phần 1

Thuộc phần Kiến thức nền tảng trong hành trình R của Coddy. Bài học 20 trên 78.

R có hai phiên bản toán tử AND và OR. Bạn đã tìm hiểu về && và ||, hoạt động với từng giá trị riêng lẻ. Bây giờ, hãy cùng tìm hiểu các toán tử tương ứng hoạt động theo từng phần tử của mảng: & và | (ký hiệu đơn).

Điểm khác biệt chính là & và | so sánh các giá trị theo từng phần tử khi làm việc với nhiều giá trị:

a <- c(TRUE, TRUE, FALSE, FALSE)
b <- c(TRUE, FALSE, TRUE, FALSE)

a & b   # TRUE FALSE FALSE FALSE
a | b   # TRUE TRUE TRUE FALSE

Mỗi vị trí được so sánh độc lập. Ở vị trí đầu tiên, cả a và b đều là TRUE, nên a & b trả về TRUE. Ở vị trí thứ hai, a là TRUE nhưng b là FALSE, nên a & b trả về FALSE.

Điều này trở nên mạnh mẽ hơn khi kết hợp với các toán tử so sánh:

scores <- c(85, 42, 91, 67, 55)

# Kiểm tra những điểm số nào nằm trong khoảng từ 50 đến 80
scores >= 50 & scores <= 80  # FALSE FALSE FALSE TRUE TRUE

Kết quả là một véc-tơ gồm các giá trị logic, cho biết những phần tử nào thỏa mãn cả hai điều kiện. Cách xử lý theo từng phần tử này rất cần thiết để lọc và phân tích dữ liệu trong R.

challenge icon

Thử thách

Dễ

Sử dụng các toán tử AND (&) và OR (|) dạng vector để thực hiện phép so sánh theo từng phần tử trên các vector.

Bạn được cung cấp các vector sau:

temperatures <- c(18, 25, 32, 15, 28, 35, 22)
humidity <- c(45, 80, 60, 30, 75, 85, 50)

Sử dụng các toán tử logic dạng vector để tạo những vector logic sau:

  1. Tạo một vector có tên comfortable_temp, lưu giá trị TRUE cho mỗi nhiệt độ lớn hơn hoặc bằng 20 AND nhỏ hơn hoặc bằng 30
  2. Tạo một vector có tên high_humidity, lưu giá trị TRUE cho mỗi giá trị độ ẩm lớn hơn 70
  3. Tạo một vector có tên pleasant_day, lưu giá trị TRUE cho mỗi ngày có nhiệt độ trong khoảng từ 20 đến 30 (bao gồm cả hai đầu mút) AND độ ẩm nhỏ hơn hoặc bằng 60
  4. Tạo một vector có tên extreme_weather, lưu giá trị TRUE cho mỗi ngày có nhiệt độ lớn hơn 30 OR độ ẩm lớn hơn 80
  5. Tạo một vector có tên stay_inside, lưu giá trị TRUE cho mỗi ngày có nhiệt độ nhỏ hơn 18 OR (nhiệt độ lớn hơn 30 AND độ ẩm lớn hơn 70)

Sử dụng hàm print() để hiển thị comfortable_temp, high_humidity, pleasant_day, extreme_weather và stay_inside theo đúng thứ tự đó.

Tự làm thử

# Các vectơ đã cho
temperatures <- c(18, 25, 32, 15, 28, 35, 22)
humidity <- c(45, 80, 60, 30, 75, 85, 50)

# TODO: Viết code bên dưới
# 1. Tạo comfortable_temp: TRUE khi temp >= 20 AND temp <= 30

# 2. Tạo high_humidity: TRUE khi humidity > 70

# 3. Tạo pleasant_day: TRUE khi temp từ 20 đến 30 AND humidity <= 60

# 4. Tạo extreme_weather: TRUE khi temp > 30 OR humidity > 80

# 5. Tạo stay_inside: TRUE khi temp < 18 OR (temp > 30 AND humidity > 70)


# In ra kết quả
print(comfortable_temp)
print(high_humidity)
print(pleasant_day)
print(extreme_weather)
print(stay_inside)
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch R online