R Academy · leksjon

Matriseindeksering og utvalg

Hent rader, kolonner og elementer ved hjelp av notasjonen [row, col].

Leksjon 2 av 413 trinn

Matriseindeksering og utvalg er en gratis leksjon i R Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i R Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i R Academy inneholder totalt 4 leksjoner.

Grunnleggende matriseindeksering

For å få tilgang til elementer i en matrise bruker De notasjonen m[row, col]. Rad- og kolonneindekser starter på 1 i R. Kommaet er påkrevd — hvis det utelates, behandles matrisen som en flat vektor.

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

Hente ut en hel rad

La kolonneindeksen stå tom for å hente ut en hel rad. Resultatet er en vektor (matrisens dimensjon fjernes). Kommaet må fortsatt være med.

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

Hente ut en hel kolonne

La radindeksen stå tom for å hente ut en hel kolonne. Som ved uthenting av rader er resultatet en vektor. Kommaet som skiller rad- og kolonneposisjonene, må fortsatt være med.

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

Velge ut flere rader og kolonner

Bruk en vektor med indekser for å hente ut flere rader eller kolonner samtidig. Resultatet er en delmatrise (fortsatt en matrise, ikke en vektor), og den todimensjonale strukturen bevares.

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

Tilgang via rad- eller kolonnenavn

Hvis en matrise har rad- og kolonnenavn, kan De indeksere etter navn i stedet for posisjon. Dette er mer lesbart og tåler bedre at rader eller kolonner omorganiseres.

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

Logisk indeksering av matriser

De kan bruke en logisk vektor (eller logisk matrise) til å velge ut elementer. Når en logisk vektor brukes i én dimensjon, velger den rader eller kolonner der verdien er 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)

Negativ indeksering — utelate rader eller kolonner

Sett - foran en indeks for å utelate den aktuelle raden eller kolonnen. Dette er en ryddig måte å fjerne bestemte rader eller kolonner på uten å måtte liste opp alle de andre som skal beholdes.

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

Enkelt element med drop = FALSE

Som standard fjernes dimensjonen når De henter ut en enkelt rad eller kolonne (det returneres en vektor). Bruk drop = FALSE for å beholde resultatet som en matrise (slik at rad- og kolonnestrukturen bevares).

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

Erstatte verdier med indekser

De kan endre bestemte elementer ved å kombinere indeksering med tilordning. Dette fungerer for enkeltelementer, hele rader, hele kolonner eller delmatriser.

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)

Lineær (flat) indeksering

En matrise lagres internt som en flat vektor (kolonne for kolonne). De kan få tilgang til elementer med én heltallsindeks i denne flate rekkefølgen. Dette kan være nyttig for masseoperasjoner.

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)

Oppsummering av indeksering

Hurtigreferanse for matriseindeksering i R:

  • m[r, c] — enkeltelementet i rad r, kolonne c
  • m[r, ] — hele rad r
  • m[, c] — hele kolonne c
  • m[c(r1,r2), c(c1,c2)] — delmatrise
  • m['name', 'name'] — tilgang via dimensjonsnavn
  • m[-r, ] — utelat rad r
  • m[logical_vec, ] — logisk utvelging av rader
  • m[r, , drop=FALSE] — behold som matrise
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, ])

Kort kontroll

Hva returnerer m[-2, ] for en matrise m med 3 rader?

Oppsummering: Matriseindeksering

Godt jobbet! Dette er de viktigste punktene fra leksjonen:

  • m[r, c] bruker først rad og deretter kolonne — begge posisjonene skilles med komma
  • La den ene siden stå tom (m[r, ] eller m[, c]) for å hente ut hele rader eller kolonner
  • Negative indekser utelater rader eller kolonner
  • Logiske vektorer kan filtrere rader eller kolonner
  • Navngitte dimensjoner gjør det mulig å indeksere etter navn, noe som gir bedre lesbarhet
  • drop = FALSE hindrer at dimensjonen går tapt når enkeltstående rader eller kolonner hentes ut
# 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, '
')
}
Gratis å komme i gang

Lær deg R med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
43
Leksjoner
159

Ofte stilte spørsmål

Er leksjonen «Matriseindeksering og utvalg» gratis?

Ja – du kan lese valgfritt 3 av leksjonene i læringsstien R Academy, inkludert «Matriseindeksering og utvalg», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i R Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Matriseindeksering og utvalg»?

Hent rader, kolonner og elementer ved hjelp av notasjonen [row, col]. Du øver på R Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med R Academy?

Ingen tidligere erfaring er nødvendig. R Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Matriseindeksering og utvalg»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne R Academy-leksjonen?

Ja. Alle R Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Opprette matriser med matrix()
  2. Matriseindeksering og utvalg
  3. Matrise­aritmetikk og operasjoner
  4. Transponering og omforming av matriser
← Tilbake til R Academy