R Academy · Lektion

Transponera och omforma matriser

Använd t(), dim() och reshape-operationer på matriser.

Lektion 4 av 413 steg

Transponera och omforma matriser är en gratis lektion i R Academy på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för R Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i R Academy innehåller totalt 4 lektioner.

Transponera en matris med t()

t(m) transponerar en matris – rader och kolumner byter plats så att rad i blir kolumn i i resultatet. Dimensionerna byter plats: en matris med dimensionen 3x4 blir 4x3 efter 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)), '
')

Transponera med namngivna dimensioner

När en matris har rad- och kolumnnamn byter t() korrekt plats på namnen: radnamn blir kolumnnamn och tvärtom. På så sätt behåller dina data sina etiketter efter transponeringen.

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

Ändra form med dim(m) <- c(r, c)

Du kan ändra formen på en matris genom att tilldela dess attribut dim på nytt. Det totala antalet element måste vara oförändrat. Vid omformning läses och fylls matrisen i kolumn för kolumn, precis som med 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)

Konvertera matris till vektor med as.vector()

as.vector(m) plattar ut en matris till en endimensionell vektor genom att läsa värdena kolumn för kolumn. Det tar bort alla dimensionsattribut från 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), '
')

Konvertera vektor till matris med as.matrix()

as.matrix(v) konverterar en vektor till en matris med en enda kolumn. Det här är den enklaste konverteringen. Därefter kan du ändra formen med dim() för att få önskade dimensioner.

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() – stapla rader

rbind() kombinerar matriser eller vektorer genom att stapla rader. Alla indata måste ha samma antal kolumner. Den resulterande matrisen får det sammanlagda antalet 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() – sammanfoga kolumner

cbind() kombinerar matriser eller vektorer genom att sammanfoga kolumner sida vid sida. Alla indata måste ha samma antal rader. Resultatet får det sammanlagda antalet kolumner.

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() och cbind() med namngivna rader eller kolumner

När du använder rbind() eller cbind() på namngivna matriser eller vektorer bevaras dimensionsnamnen (för vektorer blir vektornamnen rad- eller kolumnnamn).

# 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 vid dubbel transponering

Om du tillämpar t() två gånger får du tillbaka den ursprungliga matrisen. Det är en användbar rimlighetskontroll och visar att transponering är sin egen inversa operation: 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), '
')

Praktiskt: omformning i pivotstil

En vanlig omformningsuppgift är att konvertera mellan breda och långa format. Här simulerar vi en manuell pivotering från brett till långt format med matrisoperationer – genom att transponera, platta ut och bygga upp strukturen igen.

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

Sammanfattning av omformning och kombination

Viktiga verktyg för omformning och kombination av matriser:

  • t(m) – transponera (byt plats på rader och kolumner)
  • dim(m) <- c(r, c) – ändra form på plats (samma totala antal element)
  • as.vector(m) – platta ut till en endimensionell vektor (kolumnvis)
  • as.matrix(v) – konvertera vektor till matris med en kolumn
  • rbind(...) – stapla matriser vertikalt
  • cbind(...) – sammanfoga matriser horisontellt
# 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)

Snabbkontroll

Vilka dimensioner får t(matrix(1:12, nrow = 3, ncol = 4))?

Sammanfattning: Transponering och omformning

Utmärkt! Viktiga slutsatser från den här lektionen:

  • t(m) byter plats på rader och kolumner; t(t(m)) returnerar originalet
  • dim(m) <- c(r, c) ändrar formen utan att kopiera (samma antal element krävs)
  • as.vector() plattar ut kolumn för kolumn; as.matrix() skapar en matris med en kolumn
  • rbind() staplar rader (samma antal kolumner krävs)
  • cbind() sammanfogar kolumner sida vid sida (samma antal rader krävs)
  • Namngivna dimensioner bevaras genom dessa operationer
# 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), '
')
Gratis att börja

Lär dig R med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
43
Lektioner
159

Vanliga frågor

Är lektionen ”Transponera och omforma matriser” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen R Academy, inklusive ”Transponera och omforma matriser”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i R Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Transponera och omforma matriser”?

Använd t(), dim() och reshape-operationer på matriser. Ni övar på R Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig R Academy?

Du behöver inga förkunskaper. Utbildningen i R Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Transponera och omforma matriser”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här R Academy-lektionen?

Ja. Varje R Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Skapa matriser med matrix()
  2. Indexerering och delmängder av matriser
  3. Matrisaritmetik och matrisoperationer
  4. Transponera och omforma matriser
← Tillbaka till R Academy