Matriisien transponointi ja muotoilu
Käyttäkää matriiseihin t()- ja dim()-funktioita sekä reshape-operaatioita.
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 sarakematriisiksirbind(...)— pinoaa matriisit pystysuunnassacbind(...)— 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 matriisindim(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 matriisinrbind()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), '
')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
- Matriisien luominen matrix()-funktiolla
- Matriisien indeksointi ja osajoukot
- Matriisien aritmetiikka ja operaatiot
- Matriisien transponointi ja muotoilu