R Academy · Oppitunti

Matriisien transponointi ja muotoilu

Käyttäkää matriiseihin t()- ja dim()-funktioita sekä reshape-operaatioita.

Oppitunti 4/413 vaihetta

Matriisien transponointi ja muotoilu on ilmainen R Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu R Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. R Academy-kurssilla on yhteensä 4 oppituntia.

Matriisin transponointi funktiolla t()

t(m) transponoi matriisin — se vaihtaa rivit ja sarakkeet niin, että rivi i muuttuu tuloksessa sarakkeeksi i. Ulottuvuudet vaihtuvat: 3x4-matriisista tulee transponoinnin jälkeen 4x3-matriisi.

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

Transponointi nimettyjen ulottuvuuksien kanssa

Kun matriisilla on rivien ja sarakkeiden nimet, t() vaihtaa nimet oikein: rivien nimistä tulee sarakkeiden nimiä ja päinvastoin. Näin datan nimitykset säilyvät transponoinnin jälkeen.

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

Muodon muuttaminen komennolla dim(m) <- c(r, c)

Voit muuttaa matriisin muotoa määrittämällä sen dim-attribuutin uudelleen. Alkioiden kokonaismäärän on pysyttävä samana. Muodon muuttaminen lukee ja täyttää datan sarake kerrallaan, aivan kuten 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)

Matriisin muuntaminen vektoriksi funktiolla as.vector()

as.vector(m) litistää matriisin yksiulotteiseksi vektoriksi ja lukee arvot sarake kerrallaan. Tämä poistaa objektista kaikki ulottuvuusattribuutit.

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

Vektorin muuntaminen matriisiksi funktiolla as.matrix()

as.matrix(v) muuntaa vektorin yksisarakkeiseksi matriisiksi. Tämä on yksinkertaisin muunnos. Voit sen jälkeen muuttaa sen muotoa dim()-funktiolla haluamiesi ulottuvuuksien saavuttamiseksi.

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() — rivien pinoaminen

rbind() yhdistää matriiseja tai vektoreita pinoamalla rivit. Kaikilla syötteillä on oltava sama sarakkeiden määrä. Tuloksena olevan matriisin rivien määrä on syötteiden rivimäärien summa.

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() — sarakkeiden yhdistäminen

cbind() yhdistää matriiseja tai vektoreita liittämällä sarakkeet vierekkäin. Kaikilla syötteillä on oltava sama rivien määrä. Tuloksena olevassa matriisissa on sarakkeita yhteensä syötteiden sarakemäärien verran.

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() ja cbind() nimettyjen rivien ja sarakkeiden kanssa

Kun käytät rbind()- tai cbind()-funktiota nimetyille matriiseille tai vektoreille, ulottuvuuksien nimet säilyvät (vektoreiden nimet muuttuvat rivi- tai sarakenimiksi).

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

Kahden transponoinnin identiteetti

t()-funktion käyttäminen kahdesti palauttaa alkuperäisen matriisin. Tämä on hyödyllinen järkevyystarkistus ja osoittaa, että transponointi on oma käänteisoperaationsa: 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), '
')

Käytännössä: pivot-tyylinen muodon muuttaminen

Yleinen muodon muuttamisen tehtävä on muuntaa data leveästä muodosta pitkään muotoon tai päinvastoin. Tässä simuloimme manuaalista leveästä muodosta pitkään muotoon tehtävää pivot-muunnosta matriisioperaatioilla — transponoimalla, litistämällä ja rakentamalla rakenteen uudelleen.

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

Muodon muuttamisen ja yhdistämisen yhteenveto

Matriisien muodon muuttamisen ja yhdistämisen tärkeimmät työkalut:

  • t(m) — transponoi (vaihtaa rivit ja sarakkeet)
  • dim(m) <- c(r, c) — muuttaa muotoa paikallaan (alkioiden kokonaismäärän on säilyttävä samana)
  • as.vector(m) — litistää yksiulotteiseksi vektoriksi (sarakejärjestyksessä)
  • as.matrix(v) — muuntaa vektorin sarakematriisiksi
  • rbind(...) — pinoaa matriisit pystysuunnassa
  • cbind(...) — yhdistää matriisit vaakasuunnassa
# 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)

Pikacheck

Minkä ulottuvuudet t(matrix(1:12, nrow = 3, ncol = 4)) tuottaa?

Kertaus: transponointi ja muodon muuttaminen

Erinomaista! Tämän oppitunnin tärkeimmät asiat:

  • t(m) vaihtaa rivit ja sarakkeet; t(t(m)) palauttaa alkuperäisen matriisin
  • dim(m) <- c(r, c) muuttaa muotoa kopioimatta dataa (alkioiden määrän on oltava sama)
  • as.vector() litistää datan sarake kerrallaan; as.matrix() luo yksisarakkeisen matriisin
  • rbind() pinoaa rivit (sarakkeiden määrän on oltava sama)
  • cbind() yhdistää sarakkeet vierekkäin (rivien määrän on oltava sama)
  • Nimetyt ulottuvuudet säilyvät näissä operaatioissa
# 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), '
')
Aloita maksutta

Opi R tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
43
Oppitunnit
159

Usein kysytyt kysymykset

Onko oppitunti ”Matriisien transponointi ja muotoilu” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa R Academy-oppimispolun 3 oppituntia, myös oppitunnin “Matriisien transponointi ja muotoilu”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. R Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Matriisien transponointi ja muotoilu”?

Käyttäkää matriiseihin t()- ja dim()-funktioita sekä reshape-operaatioita. Harjoittelet R Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni R Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin R Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Matriisien transponointi ja muotoilu”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä R Academy-oppitunnilla?

Kyllä. Jokainen R Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Matriisien luominen matrix()-funktiolla
  2. Matriisien indeksointi ja osajoukot
  3. Matriisien aritmetiikka ja operaatiot
  4. Matriisien transponointi ja muotoilu
← Takaisin: R Academy