Transponering og omforming av matriser
Bruk t(), dim() og reshape-operasjoner på matriser.
Transponering og omforming av matriser er en gratis leksjon i R Academy på CoddyKit. Dette er leksjon 4 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.
Transponere en matrise med t()
t(m) transponerer en matrise — den bytter om på rader og kolonner, slik at rad i blir kolonne i i resultatet. Dimensjonene byttes: en 3x4-matrise blir en 4x3-matrise etter transponering.
m <- matrix(1:6, nrow = 2, ncol = 3)
cat('Original (2x3):
'); print(m)
cat('Transposed (3x2):
'); print(t(m))
cat('Original dim:', dim(m), '-> Transposed dim:', dim(t(m)), '
')Transponere med navngitte dimensjoner
Når en matrise har rad- og kolonnenavn, bytter t() navnene korrekt: radnavn blir kolonnenavn, og omvendt. Dermed beholder dataene etikettene sine etter transponering.
scores <- matrix(
c(88,92,75, 79,85,90),
nrow = 2, byrow = TRUE,
dimnames = list(c('Alice', 'Bob'), c('Math', 'Sci', 'Eng'))
)
cat('Original (students x subjects):
'); print(scores)
cat('Transposed (subjects x students):
'); print(t(scores))Omforme med dim(m) <- c(r, c)
De kan omforme en matrise ved å tilordne dim-attributtet på nytt. Det totale antallet elementer må forbli det samme. Omformingen leser og fyller inn kolonne for kolonne, akkurat som matrix().
m <- matrix(1:12, nrow = 3, ncol = 4)
cat('Original (3x4):
'); print(m)
# Reshape to 4x3
dim(m) <- c(4, 3)
cat('Reshaped to (4x3):
'); print(m)
# Reshape to 6x2
dim(m) <- c(6, 2)
cat('Reshaped to (6x2):
'); print(m)Konvertere matrise til vektor med as.vector()
as.vector(m) gjør en matrise om til en endimensjonal vektor ved å lese verdiene kolonne for kolonne. Dette fjerner alle dimensjonsattributter fra objektet.
m <- matrix(c(10,20,30,40,50,60), nrow = 2, ncol = 3)
cat('Matrix:
'); print(m)
v <- as.vector(m)
cat('As vector (col-by-col):', v, '
')
cat('Is vector:', is.vector(v), '
')
cat('Is matrix:', is.matrix(v), '
')Konvertere vektor til matrise med as.matrix()
as.matrix(v) konverterer en vektor til en matrise med én kolonne. Dette er den enkleste konverteringen. Deretter kan De omforme den med dim() for å få ønskede dimensjoner.
v <- c(5, 10, 15, 20, 25, 30)
cat('Vector:', v, '
')
# as.matrix makes a 6x1 matrix
m_single_col <- as.matrix(v)
cat('Single-column matrix:
'); print(m_single_col)
cat('Dimensions:', dim(m_single_col), '
')rbind() — stable rader
rbind() kombinerer matriser eller vektorer ved å stable rader. Alle inndata må ha samme antall kolonner. Den resulterende matrisen får det samlede antallet rader.
first_half <- matrix(1:6, nrow = 2, ncol = 3)
second_half <- matrix(7:12, nrow = 2, ncol = 3)
combined <- rbind(first_half, second_half)
cat('rbind result (4x3):
'); print(combined)
cat('Dimensions:', dim(combined), '
')cbind() — slå sammen kolonner
cbind() kombinerer matriser eller vektorer ved å slå sammen kolonner side ved side. Alle inndata må ha samme antall rader. Resultatet får det samlede antallet kolonner.
ids <- matrix(101:104, nrow = 4, ncol = 1)
scores_mat <- matrix(c(88,79,95,72, 92,85,78,90), nrow = 4)
full_data <- cbind(ids, scores_mat)
colnames(full_data) <- c('ID', 'Test1', 'Test2')
cat('cbind result:
'); print(full_data)rbind() og cbind() med navngitte rader eller kolonner
Når De bruker rbind() eller cbind() på navngitte matriser eller vektorer, bevares dimensjonsnavnene (og for vektorer blir vektornavnene til rad- eller kolonnenavn).
# Add a new student row with rbind
existing <- matrix(c(88,92,75, 79,85,90), nrow = 2, byrow = TRUE,
dimnames = list(c('Alice','Bob'), c('Math','Sci','Eng')))
new_student <- c(Math=95, Sci=78, Eng=82)
updated <- rbind(existing, Carol = new_student)
cat('Updated roster:
'); print(updated)Identitet ved dobbel transponering
Hvis De bruker t() to ganger, returneres den opprinnelige matrisen. Dette er en nyttig rimelighetssjekk og viser at transponering er sin egen inverse operasjon: t(t(m)) == m.
m <- matrix(c(1,2,3,4,5,6), nrow = 2)
cat('Original:
'); print(m)
cat('t(m):
'); print(t(m))
cat('t(t(m)):
'); print(t(t(m)))
cat('t(t(m)) == m:', all(t(t(m)) == m), '
')Praktisk: Pivotlignende omforming
En vanlig omformingsoppgave er å konvertere mellom bredt og langt format. Her simulerer vi en manuell pivotering fra bredt til langt format ved hjelp av matriseoperasjoner — transponering, utflating og gjenoppbygging av strukturen.
# Wide: 3 students x 4 months scores
wide <- matrix(c(85,88,90,92, 78,80,79,83, 91,94,88,95),
nrow = 3, byrow = TRUE)
rownames(wide) <- c('Alice', 'Bob', 'Carol')
colnames(wide) <- c('Jan', 'Feb', 'Mar', 'Apr')
cat('Wide format:
'); print(wide)
# Transposed: 4 months x 3 students
long_view <- t(wide)
cat('Transposed (months x students):
'); print(long_view)Oppsummering av omforming og kombinering
Viktige verktøy for omforming og kombinering av matriser:
t(m)— transponer (bytt om på rader og kolonner)dim(m) <- c(r, c)— omform på stedet (samme totale antall elementer)as.vector(m)— flat ut til en endimensjonal vektor (kolonneorientert)as.matrix(v)— konverter vektor til en matrise med én kolonnerbind(...)— stable matriser vertikaltcbind(...)— slå sammen matriser horisontalt
# Demo all tools
v <- 1:6
m1 <- as.matrix(v) # 6x1
dim(m1) <- c(2, 3) # reshape to 2x3
m2 <- t(m1) # 3x2
m3 <- cbind(m2, c(10, 20, 30)) # 3x3
cat('Final matrix:
'); print(m3)Kort kontroll
Hvilke dimensjoner produserer t(matrix(1:12, nrow = 3, ncol = 4))?
Oppsummering: Transponering og omforming
Utmerket! Dette er de viktigste punktene fra leksjonen:
t(m)bytter om på rader og kolonner;t(t(m))returnerer den opprinnelige matrisendim(m) <- c(r, c)omformer uten å kopiere (samme antall elementer kreves)as.vector()flater ut kolonne for kolonne;as.matrix()oppretter en matrise med én kolonnerbind()stabler rader (samme antall kolonner kreves)cbind()slår sammen kolonner side ved side (samme antall rader kreves)- Navngitte dimensjoner bevares gjennom disse operasjonene
# Practical: merge data then compute column means
team_a <- matrix(c(82,78,91, 85,80,88), nrow = 2, byrow=TRUE)
team_b <- matrix(c(75,92,79, 88,84,93), nrow = 2, byrow=TRUE)
all_teams <- rbind(team_a, team_b)
colnames(all_teams) <- c('Speed', 'Accuracy', 'Strength')
cat('Combined teams:
'); print(all_teams)
cat('Average per skill:', colMeans(all_teams), '
')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 «Transponering og omforming av matriser» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien R Academy, inkludert «Transponering og omforming av matriser», 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 «Transponering og omforming av matriser»?
Bruk t(), dim() og reshape-operasjoner på matriser. 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 4 av 4.
Hvor lang tid tar leksjonen «Transponering og omforming av matriser»?
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
- Opprette matriser med matrix()
- Matriseindeksering og utvalg
- Matrisearitmetikk og operasjoner
- Transponering og omforming av matriser