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

การทำดัชนีและเลือกข้อมูลย่อยในเมทริกซ์

เข้าถึงแถว คอลัมน์ และสมาชิกโดยใช้สัญกรณ์ [row, col]

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

พื้นฐานการระบุตำแหน่งในเมทริกซ์

หากต้องการเข้าถึงสมาชิกในเมทริกซ์ ให้ใช้สัญกรณ์ m[row, col] ดัชนีแถวและคอลัมน์ใน R เริ่มต้นที่ 1 ต้องมีเครื่องหมายจุลภาค หากละไว้ R จะถือว่าเมทริกซ์เป็นเวกเตอร์แบบแบน

m <- matrix(1:12, nrow = 3, ncol = 4)
cat('Full matrix:
')
print(m)

# Element at row 2, column 3
cat('m[2, 3] =', m[2, 3], '
')

# Element at row 1, column 4
cat('m[1, 4] =', m[1, 4], '
')

การดึงข้อมูลทั้งแถว

เว้นดัชนีคอลัมน์ว่างไว้เพื่อดึงข้อมูลทั้งแถว ผลลัพธ์จะเป็นเวกเตอร์ (มิติของเมทริกซ์จะถูกตัดออก) และยังต้องมีเครื่องหมายจุลภาคอยู่

scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
                 nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')
print(scores)

# Extract Alice's row
alice_scores <- scores[1, ]
cat('Alice:', alice_scores, '
')
cat('Alice mean:', mean(alice_scores), '
')

การดึงข้อมูลทั้งคอลัมน์

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

scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
                 nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')

# Extract the Math column
math_scores <- scores[, 1]
cat('Math scores:', math_scores, '
')
cat('Math mean:  ', mean(math_scores), '
')
cat('Math max:   ', max(math_scores), '
')

การเลือกหลายแถวและหลายคอลัมน์

ใช้เวกเตอร์ของดัชนีเพื่อดึงข้อมูลหลายแถวหรือหลายคอลัมน์พร้อมกัน ผลลัพธ์จะเป็นเมทริกซ์ย่อย (ยังคงเป็นเมทริกซ์ ไม่ใช่เวกเตอร์) โดยรักษาโครงสร้างสองมิติไว้

m <- matrix(1:16, nrow = 4, ncol = 4)
cat('Original 4x4:
')
print(m)

# Extract rows 1,3 and columns 2,4
sub_m <- m[c(1, 3), c(2, 4)]
cat('Submatrix rows 1,3 cols 2,4:
')
print(sub_m)
cat('Class:', class(sub_m), '
')

การเข้าถึงด้วยชื่อแถวหรือคอลัมน์

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

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')
                 ))

# Access by name
cat('Bob Science:', scores['Bob', 'Sci'], '
')
cat('Carol row:
')
print(scores['Carol', ])
cat('English column:
')
print(scores[, 'Eng'])

การระบุดัชนีเชิงตรรกะในเมทริกซ์

คุณสามารถใช้เวกเตอร์เชิงตรรกะ (หรือเมทริกซ์เชิงตรรกะ) เพื่อเลือกสมาชิกได้ เมื่อใช้เวกเตอร์เชิงตรรกะกับมิติใดมิติหนึ่ง ระบบจะเลือกแถวหรือคอลัมน์ที่มีค่าเป็น TRUE

scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
                 nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')

# Select students with mean score >= 85
row_means <- rowMeans(scores)
high_achievers <- scores[row_means >= 85, ]
cat('High achievers (mean >= 85):
')
print(high_achievers)

การระบุดัชนีติดลบ — การตัดแถวหรือคอลัมน์ออก

เติมเครื่องหมาย - หน้าดัชนีเพื่อตัดแถวนั้นหรือคอลัมน์นั้นออก วิธีนี้ช่วยตัดแถวหรือคอลัมน์ที่ต้องการได้อย่างสะดวก โดยไม่ต้องระบุรายการอื่นทั้งหมดที่ต้องการเก็บไว้

m <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE)
cat('Original:
')
print(m)

# Drop row 2
cat('Without row 2:
')
print(m[-2, ])

# Drop columns 1 and 3
cat('Without cols 1 and 3:
')
print(m[, c(-1, -3)])

สมาชิกเดียวด้วย drop = FALSE

โดยค่าเริ่มต้น การดึงแถวหรือคอลัมน์เดียวจะตัดมิติออก (และคืนค่าเป็นเวกเตอร์) ให้ใช้ drop = FALSE เพื่อให้ผลลัพธ์ยังคงเป็นเมทริกซ์ (และรักษาโครงสร้างแถวหรือคอลัมน์ไว้)

m <- matrix(1:9, nrow = 3, ncol = 3)

# Default: drops to vector
row1_vector <- m[1, ]
cat('m[1,] class:', class(row1_vector), '
')  # numeric (vector)

# drop = FALSE: keeps as 1-row matrix
row1_matrix <- m[1, , drop = FALSE]
cat('m[1,,drop=FALSE] class:', class(row1_matrix), '
')
cat('Dimensions:', dim(row1_matrix), '
')

การแทนค่าด้วยดัชนี

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

m <- matrix(0, nrow = 4, ncol = 4)
cat('Zero matrix:
')
print(m)

# Set diagonal to 5
for (i in 1:4) m[i, i] <- 5
cat('After setting diagonal:
')
print(m)

# Replace entire row 2
m[2, ] <- c(1, 2, 3, 4)
cat('After replacing row 2:
')
print(m)

การระบุดัชนีเชิงเส้น (แบบแบน)

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

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

# Flat indices: column by column
cat('m[1] =', m[1], '(row 1, col 1)
')
cat('m[3] =', m[3], '(row 1, col 2)
')
cat('m[5] =', m[5], '(row 1, col 3)
')

# Replace flat index 4
m[4] <- 99
print(m)

สรุปการระบุดัชนี

ข้อมูลอ้างอิงอย่างรวดเร็วสำหรับการระบุดัชนีเมทริกซ์ใน R:

  • m[r, c] — สมาชิกเดียวที่แถว r คอลัมน์ c
  • m[r, ] — แถว r ทั้งแถว
  • m[, c] — คอลัมน์ c ทั้งคอลัมน์
  • m[c(r1,r2), c(c1,c2)] — เมทริกซ์ย่อย
  • m['name', 'name'] — เข้าถึงด้วยชื่อมิติ
  • m[-r, ] — ตัดแถว r ออก
  • m[logical_vec, ] — เลือกแถวเชิงตรรกะ
  • m[r, , drop=FALSE] — รักษาให้เป็นเมทริกซ์
m <- matrix(c(5,10,15,20,25,30), nrow = 2, ncol = 3)
cat('m[1,2] =', m[1,2], '
')
cat('m[2,]  =', m[2,], '
')
cat('m[,3]  =', m[,3], '
')
cat('m[-1,] :
'); print(m[-1, ])

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

m[-2, ] คืนค่าอะไรเมื่อ m เป็นเมทริกซ์ที่มี 3 แถว

ทบทวน: การระบุดัชนีในเมทริกซ์

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

  • m[r, c] ใช้แถวก่อนแล้วจึงใช้คอลัมน์ โดยทั้งสองตำแหน่งคั่นด้วยจุลภาค
  • เว้นด้านใดด้านหนึ่งว่างไว้ (m[r, ] หรือ m[, c]) เพื่อดึงข้อมูลทั้งแถวหรือทั้งคอลัมน์
  • ดัชนีติดลบใช้ตัดแถวหรือคอลัมน์ออก
  • เวกเตอร์เชิงตรรกะใช้กรองแถวหรือคอลัมน์ได้
  • มิติที่มีชื่อช่วยให้ระบุดัชนีด้วยชื่อได้ง่ายและอ่านเข้าใจได้ดี
  • drop = FALSE ป้องกันไม่ให้มิติหายไปเมื่อดึงแถวหรือคอลัมน์เดียว
# Practical: find best student per subject
scores <- matrix(c(88,92,75,81, 79,85,90,73, 95,78,82,88),
                 nrow = 3, byrow = TRUE)
rownames(scores) <- c('Alice', 'Bob', 'Carol')
colnames(scores) <- c('Math', 'Sci', 'Eng', 'Hist')

for (subj in colnames(scores)) {
  best <- rownames(scores)[which.max(scores[, subj])]
  cat('Best in', subj, ':', best, '
')
}

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

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

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

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

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

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

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

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

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

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

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

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

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