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 FALSEMỗ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 TRUEKế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.
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:
- Tạo một vector có tên
comfortable_temp, lưu giá trịTRUEcho mỗi nhiệt độ lớn hơn hoặc bằng 20 AND nhỏ hơn hoặc bằng 30 - Tạo một vector có tên
high_humidity, lưu giá trịTRUEcho mỗi giá trị độ ẩm lớn hơn 70 - Tạo một vector có tên
pleasant_day, lưu giá trịTRUEcho 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 - Tạo một vector có tên
extreme_weather, lưu giá trịTRUEcho mỗi ngày có nhiệt độ lớn hơn 30 OR độ ẩm lớn hơn 80 - Tạo một vector có tên
stay_inside, lưu giá trịTRUEcho 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)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
4Toán tử phần 2
Toán tử logic (AND, OR)Toán tử logic phần 2 (NOT)Ôn tập: logic đơn giảnLogic vector hóa phần 1Logic vector hóa phần 22Biến và kiểu dữ liệu
Kiểu dữ liệu sốKiểu dữ liệu số nguyênKiểu dữ liệu ký tựKiểu dữ liệu logicKiểm tra kiểu dữ liệuQuy tắc đặt tênGiá trị thiếu: NATóm tắt: tạo biến8Vòng lặp
Vòng lặp forVòng lặp whileBreakNext (continue)Ôn tập: giai thừaTạo dãy (seq, :)Vòng lặp lồng nhauÔn tập: đầu vào động3Toán tử phần 1
Toán tử số họcPhép chia lấy phần nguyên và phép moduloToán tử gánÔn tập: phép tính đơn giảnToán tử so sánh6Nhập xuất cơ bản
In đầu raDùng cat để in đầu raĐầu ra với biếnĐọc đầu vào bằng readline()Cơ bản về chuyển đổi kiểuÔn tập: máy tính tuổiÔn tập: đúng hay sai9Hàm
Khai báo hàmĐối số hàmGiá trị trả vềÔn tập: hàm SigmaÔn tập: hàm xác thựcGiá trị tham số mặc địnhTự luyện tập: Trình biên dịch R online