0Pricing
R Academy · Lezione

Trasposizione e rimodellazione delle matrici

Usi t(), dim() e le operazioni di reshape sulle matrici.

Trasposizione e rimodellazione delle matrici è una lezione R Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento R Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso R Academy include 4 lezioni in totale.

Trasporre una matrice con t()

t(m) trasponde una matrice: scambia righe e colonne, in modo che la riga i diventi la colonna i nel risultato. Le dimensioni vengono scambiate: una matrice 3x4 diventa una matrice 4x3 dopo la trasposizione.

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

Trasporre con dimensioni denominate

Quando una matrice ha nomi per righe e colonne, t() li scambia correttamente: i nomi delle righe diventano nomi delle colonne e viceversa. In questo modo i dati mantengono le proprie etichette dopo la trasposizione.

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

Rimodellare con dim(m) <- c(r, c)

Può rimodellare una matrice riassegnando il suo attributo dim. Il numero totale di elementi deve rimanere invariato. Il rimodellamento legge e riempie i dati colonna per colonna, proprio come 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)

Convertire una matrice in un vettore con as.vector()

as.vector(m) appiattisce una matrice trasformandola in un vettore unidimensionale e legge i valori colonna per colonna. In questo modo rimuove tutti gli attributi di dimensione dall'oggetto.

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

Convertire un vettore in una matrice con as.matrix()

as.matrix(v) converte un vettore in una matrice con una singola colonna. È la conversione più semplice. Può poi rimodellarla usando dim() per ottenere le dimensioni desiderate.

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() — impilare le righe

rbind() combina matrici o vettori impilando le righe. Tutti gli input devono avere lo stesso numero di colonne. La matrice risultante ha il numero combinato di righe.

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() — unire le colonne

cbind() combina matrici o vettori unendo le colonne affiancate. Tutti gli input devono avere lo stesso numero di righe. Il risultato ha il numero combinato di colonne.

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() e cbind() con righe e colonne denominate

Quando usa rbind() o cbind() con matrici o vettori denominati, i nomi delle dimensioni vengono preservati (nel caso dei vettori, i nomi del vettore diventano nomi di riga o di colonna).

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

Identità della doppia trasposizione

Applicare t() due volte restituisce la matrice originale. È un utile controllo di coerenza e dimostra che la trasposizione è l'operazione inversa di sé stessa: 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), '
')

Esercizio pratico: rimodellamento in stile pivot

Un'attività comune di rimodellamento consiste nel convertire i dati tra il formato largo e quello lungo. Qui simuleremo manualmente una trasformazione da formato largo a formato lungo usando operazioni sulle matrici: trasposizione, appiattimento e ricostruzione della struttura.

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

Riepilogo di rimodellamento e combinazione

Strumenti fondamentali per rimodellare e combinare le matrici:

  • t(m) — traspone (scambia righe e colonne)
  • dim(m) <- c(r, c) — rimodella sul posto (mantenendo lo stesso numero totale di elementi)
  • as.vector(m) — appiattisce in un vettore 1D (ordine per colonne)
  • as.matrix(v) — converte un vettore in una matrice a una colonna
  • rbind(...) — impila verticalmente le matrici
  • cbind(...) — unisce orizzontalmente le matrici
# 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)

Verifica rapida

Quali dimensioni produce t(matrix(1:12, nrow = 3, ncol = 4))?

Riepilogo: trasposizione e rimodellamento

Ottimo! Ecco i concetti chiave di questa lezione:

  • t(m) scambia righe e colonne; t(t(m)) restituisce l'originale
  • dim(m) <- c(r, c) rimodella senza effettuare copie (è necessario mantenere lo stesso numero di elementi)
  • as.vector() appiattisce colonna per colonna; as.matrix() crea una matrice a una colonna
  • rbind() impila le righe (è richiesto lo stesso numero di colonne)
  • cbind() unisce le colonne affiancandole (è richiesto lo stesso numero di righe)
  • Le dimensioni denominate vengono preservate durante queste operazioni
# 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), '
')

Domande Frequenti

La lezione «Trasposizione e rimodellazione delle matrici» è gratuita?

Sì — il testo completo di «Trasposizione e rimodellazione delle matrici» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso R Academy, passa a CoddyKit PRO. Il corso R Academy include 4 lezioni in totale.

Cosa imparerò in «Trasposizione e rimodellazione delle matrici»?

Usi t(), dim() e le operazioni di reshape sulle matrici. Eserciti R Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare R Academy?

Non è richiesta alcuna esperienza precedente. R Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Trasposizione e rimodellazione delle matrici»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione R Academy?

Sì. Ogni lezione R Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Creazione di matrici con matrix()
  2. Indicizzazione e subset delle matrici
  3. Aritmetica e operazioni sulle matrici
  4. Trasposizione e rimodellazione delle matrici
← Torna a R Academy