0Pricing
R Academy · บทเรียน

เลขคณิตและการดำเนินการกับเมทริกซ์

ดำเนินการคูณเมทริกซ์แบบสมาชิกต่อสมาชิกและแบบเมทริกซ์ รวมถึงการบวกและการลบ

เลขคณิตและการดำเนินการกับเมทริกซ์ เป็นบทเรียน R Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน R Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน

การดำเนินการทีละสมาชิกกับการดำเนินการเมทริกซ์

R แยกความแตกต่างระหว่างการดำเนินการทีละสมาชิก (ใช้ +, -, *, /) กับการดำเนินการเมทริกซ์จริง (ใช้ %*%) การเข้าใจความแตกต่างนี้มีความสำคัญอย่างยิ่งต่อพีชคณิตเชิงเส้นที่ถูกต้อง

A <- matrix(c(1,2,3,4), nrow = 2)
B <- matrix(c(5,6,7,8), nrow = 2)
cat('A:
'); print(A)
cat('B:
'); print(B)

# Element-wise multiply
cat('A * B (element-wise):
'); print(A * B)
# Matrix multiply
cat('A %*% B (matrix mult):
'); print(A %*% B)

การบวกและการลบทีละสมาชิก

+ และ - ระหว่างเมทริกซ์สองชุดที่มีมิติเดียวกันจะบวกหรือลบสมาชิกที่อยู่ในตำแหน่งเดียวกัน การดำเนินการเหล่านี้เป็นการดำเนินการทีละสมาชิกโดยสมบูรณ์

# Monthly revenue vs target (in thousands)
revenue <- matrix(c(120,135,110,98, 145,160,132,115),
                  nrow = 2, byrow = TRUE)
target  <- matrix(c(130,130,130,130, 150,150,150,150),
                  nrow = 2, byrow = TRUE)

deviation <- revenue - target
cat('Revenue vs Target deviation:
')
print(deviation)
cat('Above target?:
')
print(revenue >= target)

การหารและการคูณทีละสมาชิก

เช่นเดียวกัน * และ / ระหว่างเมทริกซ์ที่มีขนาดเท่ากันจะดำเนินการกับสมาชิกทีละตัว วิธีนี้มีประโยชน์สำหรับการปรับสเกล การทำให้เป็นมาตรฐาน หรือการรวมเมทริกซ์แบบทีละสมาชิก

# Scale a matrix by another (element-wise)
prices <- matrix(c(10, 20, 15, 25), nrow = 2)
quantities <- matrix(c(5, 3, 8, 2), nrow = 2)

total_cost <- prices * quantities
cat('Total cost per item:
')
print(total_cost)

# Normalise to row maximum
max_prices <- matrix(rep(apply(prices, 1, max), 2), nrow = 2)
norm_prices <- prices / max_prices
cat('Normalised prices:
')
print(norm_prices)

การดำเนินการสเกลาร์กับเมทริกซ์

คุณสามารถใช้การดำเนินการด้วยสเกลาร์ (จำนวนเพียงค่าเดียว) กับสมาชิกทุกตัวของเมทริกซ์ได้โดยใช้ตัวดำเนินการเลขคณิตมาตรฐาน ระบบจะวนใช้ซ้ำสเกลาร์ให้มีขนาดตรงกับมิติของเมทริกซ์

m <- matrix(c(10, 20, 30, 40, 50, 60), nrow = 2, ncol = 3)
cat('Original:
'); print(m)

cat('m + 5:
');  print(m + 5)
cat('m * 2:
');  print(m * 2)
cat('m / 10:
'); print(m / 10)
cat('m ^ 2:
');  print(m ^ 2)

การคูณเมทริกซ์จริง %*%

A %*% B ดำเนินการคูณเมทริกซ์ตามพีชคณิตเชิงเส้น เพื่อให้ทำงานได้ จำนวนคอลัมน์ของ A ต้องเท่ากับจำนวนแถวของ B ผลลัพธ์จะมีมิติเป็น (จำนวนแถวของ A) x (จำนวนคอลัมน์ของ B)

# 2x3 times 3x2 = 2x2
A <- matrix(c(1,2,3, 4,5,6), nrow = 2, byrow = TRUE)
B <- matrix(c(7,8, 9,10, 11,12), nrow = 3, byrow = TRUE)
cat('A (2x3):
'); print(A)
cat('B (3x2):
'); print(B)
cat('A %*% B (2x2):
'); print(A %*% B)

rowSums() และ colSums()

rowSums(m) คำนวณผลรวมของแต่ละแถว ส่วน colSums(m) คำนวณผลรวมของแต่ละคอลัมน์ ทั้งสองฟังก์ชันจะคืนค่าเป็นเวกเตอร์ที่มีชื่อ หากเมทริกซ์มีชื่อมิติ

sales <- matrix(
  c(120,135,110,98,  145,160,132,115,  88,95,102,78),
  nrow = 3, byrow = TRUE,
  dimnames = list(c('Q1','Q2','Q3'), c('Jan','Feb','Mar','Apr'))
)
cat('Sales matrix:
'); print(sales)
cat('Quarterly totals:', rowSums(sales), '
')
cat('Monthly totals: ', colSums(sales), '
')

rowMeans() และ colMeans()

rowMeans(m) และ colMeans(m) คืนค่าเฉลี่ยของแต่ละแถวและแต่ละคอลัมน์ตามลำดับ ทั้งสองฟังก์ชันทำงานได้เร็วกว่าใช้ mean() ร่วมกับ apply() สำหรับงานทั่วไปนี้

exam_scores <- matrix(
  c(88,92,75,81, 79,85,90,73, 95,78,82,88),
  nrow = 3, byrow = TRUE,
  dimnames = list(c('Alice','Bob','Carol'), c('Math','Sci','Eng','Hist'))
)
cat('Student averages:
')
print(rowMeans(exam_scores))
cat('Subject averages:
')
print(colMeans(exam_scores))

การดำเนินการเปรียบเทียบกับเมทริกซ์

ตัวดำเนินการเปรียบเทียบ (==, >, <= เป็นต้น) ที่ใช้กับเมทริกซ์จะคืนค่าเป็นเมทริกซ์เชิงตรรกะที่มีมิติเดียวกัน จากนั้นคุณสามารถใช้หน้ากากนี้เพื่อเลือกข้อมูลย่อยหรือนับจำนวนได้

scores <- matrix(c(88,45,92,61,73,55,84,79), nrow = 2)
cat('Scores:
'); print(scores)

# Which elements pass?
passing_mask <- scores >= 60
cat('Passing mask:
'); print(passing_mask)
cat('Number passing:', sum(passing_mask), '
')
cat('Passing scores:', scores[passing_mask], '
')

apply() สำหรับการดำเนินการแบบกำหนดเองกับแถวหรือคอลัมน์

apply(m, MARGIN, FUN) ใช้ฟังก์ชันกับแถว (MARGIN=1) หรือคอลัมน์ (MARGIN=2) ใช้เมื่อต้องการการรวมค่าที่กำหนดเอง นอกเหนือจาก rowSums หรือ colMeans

m <- matrix(c(3,1,4,1,5,9,2,6,5,3,5,8), nrow = 3)
cat('Matrix:
'); print(m)

# Max of each row
cat('Row max:  ', apply(m, 1, max), '
')
# Range of each column
cat('Col range:
')
print(apply(m, 2, range))
# Custom: count values > 4 per row
cat('Values > 4 per row:', apply(m, 1, function(x) sum(x > 4)), '
')

การกระจายเวกเตอร์ข้ามแถว

เมื่อคุณบวกหรือคูณเวกเตอร์กับเมทริกซ์ R จะวนใช้เวกเตอร์ซ้ำ โดยวนผ่านเวกเตอร์ให้มีความยาวตรงกับเมทริกซ์ การวนซ้ำจะเกิดขึ้นทีละคอลัมน์ ซึ่งอาจให้ผลลัพธ์ที่ไม่คาดคิดหากคุณต้องการดำเนินการทีละแถว

m <- matrix(c(10,20,30, 40,50,60), nrow = 2)
cat('Matrix:
'); print(m)

# Add a 3-element vector: R recycles column-by-column
v <- c(1, 2, 3)
cat('m + c(1,2,3):
'); print(m + v)

# For row-wise scaling, use sweep()
row_weights <- c(0.5, 2.0)  # scale row 1 by 0.5, row 2 by 2
cat('Row-wise scaled:
'); print(sweep(m, 1, row_weights, '*'))

สรุปการดำเนินการเลขคณิต

ฟังก์ชันสำคัญสำหรับการดำเนินการกับเมทริกซ์ใน R:

  • +, -, *, / — การคำนวณเลขคณิตทีละสมาชิก
  • %*% — การคูณเมทริกซ์ (พีชคณิตเชิงเส้น)
  • rowSums(), colSums() — ผลรวมตามแถวหรือคอลัมน์
  • rowMeans(), colMeans() — ค่าเฉลี่ยตามแถวหรือคอลัมน์
  • apply(m, 1, fn) / apply(m, 2, fn) — การรวมค่าตามแถวหรือคอลัมน์แบบกำหนดเอง
  • sweep() — การดำเนินการตามแถวหรือคอลัมน์ด้วยเวกเตอร์
m <- matrix(c(4,9,16,25), nrow = 2)
cat('Original:
'); print(m)
cat('sqrt (element-wise):
'); print(sqrt(m))
cat('rowSums:', rowSums(m), '
')
cat('colMeans:', colMeans(m), '
')

ตรวจสอบความเข้าใจอย่างรวดเร็ว

A * B คำนวณอะไรเมื่อ A และ B เป็นเมทริกซ์ขนาด 2x2 ใน R

ทบทวน: การคำนวณเลขคณิตกับเมทริกซ์

ทำได้ดีมาก! ประเด็นสำคัญจากบทเรียนนี้มีดังนี้:

  • +, -, *, / กับเมทริกซ์เป็นการดำเนินการทีละสมาชิก
  • %*% คือการคูณเมทริกซ์จริง (แถว × คอลัมน์)
  • rowSums(), colSums(), rowMeans(), colMeans() ใช้รวมค่าตามแถวหรือคอลัมน์
  • ตัวดำเนินการเปรียบเทียบจะคืนค่าเป็นเมทริกซ์เชิงตรรกะที่มีรูปร่างเดียวกัน
  • apply(m, 1, fn) ใช้ฟังก์ชันทีละแถว ส่วน apply(m, 2, fn) ใช้ทีละคอลัมน์
  • ใช้ sweep() สำหรับการปรับสเกลตามแถวหรือคอลัมน์แบบเวกเตอร์
# Final: compute grade curve (add 5 to all scores, cap at 100)
raw <- matrix(c(88,55,92,73,60,45,78,95), nrow = 2)
curved <- pmin(raw + 5, 100)  # pmin applies min element-wise
cat('Raw:
');    print(raw)
cat('Curved:
'); print(curved)

คำถามที่พบบ่อย

บทเรียน “เลขคณิตและการดำเนินการกับเมทริกซ์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เลขคณิตและการดำเนินการกับเมทริกซ์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส R Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส R Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เลขคณิตและการดำเนินการกับเมทริกซ์”

ดำเนินการคูณเมทริกซ์แบบสมาชิกต่อสมาชิกและแบบเมทริกซ์ รวมถึงการบวกและการลบ คุณปฏิบัติ R Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน R Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน R Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “เลขคณิตและการดำเนินการกับเมทริกซ์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน R Academy นี้ได้ไหม

ได้ บทเรียน R Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสร้างเมทริกซ์ด้วย matrix()
  2. การทำดัชนีและเลือกข้อมูลย่อยในเมทริกซ์
  3. เลขคณิตและการดำเนินการกับเมทริกซ์
  4. การทรานสโพสและปรับรูปร่างเมทริกซ์
← กลับไปที่ R Academy