ตัวดำเนินการตรรกะและตรรกะแบบบูลีน
ทำความเข้าใจ &, |, !, xor(), any() และ all() สำหรับการดำเนินการแบบบูลีน
ตัวดำเนินการตรรกะและตรรกะแบบบูลีน เป็นบทเรียน R Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน R Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน
บทนำสู่ตรรกะบูลีน
ตรรกะบูลีนเป็นพื้นฐานของการตัดสินใจในการเขียนโปรแกรม ใน R ค่าตรรกะคือ TRUE และ FALSE ตัวดำเนินการตรรกะจะรวมค่าเหล่านี้เพื่อสร้างเงื่อนไขที่ซับซ้อน
# Boolean values in R
is_raining <- TRUE
is_cold <- FALSE
cat('Is raining:', is_raining, '
')
cat('Is cold:', is_cold, '
')
cat('Class:', class(is_raining), '
')AND ทีละสมาชิกด้วย &
ตัวดำเนินการ & ทำ AND ทีละสมาชิกบนเวกเตอร์ โดยจะคืนค่า TRUE ต่อเมื่อสมาชิกที่สอดคล้องกันทั้งคู่เป็น TRUE ตัวดำเนินการนี้ประมวลผลสมาชิกทุกตัวในเวกเตอร์
ages <- c(15, 22, 17, 30, 19)
has_id <- c(FALSE, TRUE, FALSE, TRUE, TRUE)
# Can buy alcohol? (must be 18+ AND have ID)
can_buy <- (ages >= 18) & has_id
cat('Ages >= 18:', ages >= 18, '
')
cat('Has ID:', has_id, '
')
cat('Can buy:', can_buy, '
')OR ทีละสมาชิกด้วย |
ตัวดำเนินการ | ทำ OR ทีละสมาชิก โดยจะคืนค่า TRUE เมื่อสมาชิกที่สอดคล้องกันอย่างน้อยหนึ่งตัวเป็น TRUE
scores_math <- c(85, 45, 72, 38, 90)
scores_english <- c(40, 88, 65, 70, 55)
# Pass if either subject >= 60
passes <- (scores_math >= 60) | (scores_english >= 60)
cat('Math pass:', scores_math >= 60, '
')
cat('English pass:', scores_english >= 60, '
')
cat('Overall pass:', passes, '
')NOT ทางตรรกะด้วย !
ตัวดำเนินการ ! จะทำให้ค่าตรรกะเป็นตรงข้าม โดยเปลี่ยน TRUE เป็น FALSE และในทางกลับกัน ตัวดำเนินการนี้จะทำงานก่อน & และ | ตามลำดับการประเมินผล
is_weekend <- c(TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE)
cat('Is weekend:', is_weekend, '
')
cat('Is weekday:', !is_weekend, '
')
# Count weekdays
cat('Number of weekdays:', sum(!is_weekend), '
')AND ระดับสเกลาร์ด้วย &&
&& คือ ANDระดับสเกลาร์ โดยจะประเมินเฉพาะสมาชิกตัวแรกของแต่ละเวกเตอร์ และใช้การประเมินผลแบบลัดวงจร: หากด้านซ้ายเป็น FALSE จะไม่ประเมินด้านขวาเลย
x <- 10
# Short-circuit: second condition skipped if first is FALSE
if (x > 0 && x < 100) {
cat('x is a positive double-digit or less
')
}
# && only looks at first element
cat('TRUE && FALSE:', TRUE && FALSE, '
')
cat('TRUE & FALSE (vectorised):', TRUE & FALSE, '
')OR ระดับสเกลาร์ด้วย ||
|| คือ OR ระดับสเกลาร์ที่ใช้การประเมินผลแบบลัดวงจร: หากด้านซ้ายเป็น TRUE จะไม่ประเมินด้านขวา ใช้ || ในคำสั่ง if เมื่อคุณต้องการผลลัพธ์เพียงค่าเดียว
user_role <- 'admin'
# Short-circuit OR — stops at first TRUE
if (user_role == 'admin' || user_role == 'superuser') {
cat('Access granted
')
} else {
cat('Access denied
')
}
cat('FALSE || TRUE:', FALSE || TRUE, '
')Exclusive OR ด้วย xor()
xor(x, y) จะคืนค่า TRUE เมื่อ มีเพียงหนึ่งค่าเท่านั้น ระหว่าง x หรือ y ที่เป็น TRUE และจะคืนค่า FALSE เมื่อทั้งสองค่ามีสถานะเหมือนกัน เหมาะสำหรับตรรกะสลับสถานะ
# xor truth table
cat('xor(TRUE, TRUE):', xor(TRUE, TRUE), '
') # FALSE
cat('xor(TRUE, FALSE):', xor(TRUE, FALSE), '
') # TRUE
cat('xor(FALSE, TRUE):', xor(FALSE, TRUE), '
') # TRUE
cat('xor(FALSE, FALSE):', xor(FALSE, FALSE), '
') # FALSE
# Practical: exactly one sensor triggered
sensor_a <- c(TRUE, FALSE, TRUE, FALSE)
sensor_b <- c(FALSE, FALSE, TRUE, TRUE)
cat('Exactly one sensor:', xor(sensor_a, sensor_b), '
')any() และ all()
any() จะคืนค่า TRUE หากสมาชิกอย่างน้อยหนึ่งตัวเป็น TRUE ส่วน all() จะคืนค่า TRUE ต่อเมื่อสมาชิกทุกตัวเป็น TRUE ทั้งสองฟังก์ชันจะยุบเวกเตอร์ตรรกะให้เหลือค่าเดียว
temperatures <- c(22.1, 24.5, 19.8, 31.2, 28.0)
cat('Any temperature above 30?', any(temperatures > 30), '
')
cat('All temperatures above 15?', all(temperatures > 15), '
')
cat('All temperatures above 25?', all(temperatures > 25), '
')
# Useful for data validation
test_scores <- c(78, 85, 92, 88, 76)
cat('All passed (>=60)?', all(test_scores >= 60), '
')การรวมตัวดำเนินการตรรกะ
คุณสามารถเชื่อมตัวดำเนินการตรรกะหลายตัวเพื่อสร้างเงื่อนไขที่ซับซ้อนได้ R จะประเมิน ! ก่อน ตามด้วย & แล้วจึงเป็น | ใช้วงเล็บเพื่อทำให้เจตนาของโค้ดชัดเจน
age <- 25
income <- 55000
credit_score <- 720
# Loan eligibility: age 21-65, income >= 40000, credit >= 700
eligible <- (age >= 21 && age <= 65) &&
(income >= 40000) &&
(credit_score >= 700)
cat('Loan eligible:', eligible, '
')ตัวดำเนินการตรรกะกับดาต้าเฟรม
ตัวดำเนินการตรรกะมีประโยชน์อย่างมากเมื่อต้องกรองดาต้าเฟรม คุณสามารถรวมหลายเงื่อนไขเพื่อเลือกแถวที่ต้องการได้อย่างแม่นยำ
# Simple data frame
names_vec <- c('Alice', 'Bob', 'Carol', 'Dave', 'Eve')
ages_vec <- c(28, 35, 22, 45, 31)
salaries <- c(55000, 72000, 38000, 90000, 61000)
# Filter: age 25-40 AND salary above 50000
mask <- (ages_vec >= 25 & ages_vec <= 40) & (salaries > 50000)
cat('Matching employees:', names_vec[mask], '
')เลขคณิตแบบบูลีน
ใน R TRUE จะถูกถือเป็น 1 และ FALSE เป็น 0 เมื่อใช้ในการคำนวณ ดังนั้นคุณจึงใช้ sum() เพื่อนับค่า TRUE และใช้ mean() เพื่อหาสัดส่วนได้
responses <- c(TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE)
cat('Number of TRUE:', sum(responses), '
')
cat('Proportion TRUE:', mean(responses), '
')
cat('Percentage:', mean(responses) * 100, '%
')
# Count values meeting a condition
scores <- c(88, 45, 92, 61, 73, 55, 84)
cat('Number passing (>=60):', sum(scores >= 60), '
')ตรวจสอบความเข้าใจอย่างรวดเร็ว
& และ && ใน R แตกต่างกันอย่างไร
ทบทวน: ตรรกะบูลีนใน R
ยอดเยี่ยม! ต่อไปนี้คือประเด็นสำคัญจากบทเรียนนี้:
&และ|ทำงานแบบประมวลผลเป็นเวกเตอร์ โดยเปรียบเทียบสมาชิกทีละตัว&&และ||เป็นตัวดำเนินการระดับสเกลาร์ที่ใช้การประเมินผลแบบลัดวงจร — ใช้ในคำสั่งif!ทำให้ค่าตรรกะเป็นตรงข้ามxor()จะคืนค่าTRUEเมื่อมีอาร์กิวเมนต์เพียงหนึ่งตัวที่เป็นTRUEany()และall()จะยุบเวกเตอร์ตรรกะให้เหลือค่าเดียวTRUE == 1และFALSE == 0ดังนั้นคุณจึงหาผลรวมหรือค่าเฉลี่ยของเวกเตอร์ตรรกะได้
# Summary: all logical operators at a glance
x <- c(TRUE, FALSE, TRUE)
y <- c(TRUE, TRUE, FALSE)
cat('x & y :', x & y, '
')
cat('x | y :', x | y, '
')
cat('!x :', !x, '
')
cat('xor :', xor(x, y), '
')
cat('any(x):', any(x), '
')
cat('all(x):', all(x), '
')คำถามที่พบบ่อย
บทเรียน “ตัวดำเนินการตรรกะและตรรกะแบบบูลีน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ตัวดำเนินการตรรกะและตรรกะแบบบูลีน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส R Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ตัวดำเนินการตรรกะและตรรกะแบบบูลีน”
ทำความเข้าใจ &, |, !, xor(), any() และ all() สำหรับการดำเนินการแบบบูลีน คุณปฏิบัติ R Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน R Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน R Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ตัวดำเนินการตรรกะและตรรกะแบบบูลีน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน R Academy นี้ได้ไหม
ได้ บทเรียน R Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตัวดำเนินการเลขคณิตและการเปรียบเทียบ
- ตัวดำเนินการตรรกะและตรรกะแบบบูลีน
- การกำหนดค่าและตัวดำเนินการพิเศษ
- ลำดับความสำคัญของตัวดำเนินการและนิพจน์ซับซ้อน