0Pricing
R Academy · Lekcja

Tworzenie macierzy za pomocą matrix()

Twórz macierze, określając dane, nrow, ncol i byrow.

Tworzenie macierzy za pomocą matrix() to bezpłatna lekcja R Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej R Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs R Academy zawiera 4 lekcji w sumie.

Czym jest macierz w R?

Macierz w R to dwuwymiarowa struktura danych, w której wszystkie elementy muszą być tego samego typu. Można myśleć o niej jak o tabeli z wierszami i kolumnami. Macierze są niezbędne w algebrze liniowej, przetwarzaniu obrazów i obliczeniach statystycznych.

# A simple 2x3 matrix
m <- matrix(1:6, nrow = 2, ncol = 3)
cat('A 2x3 matrix:
')
print(m)
cat('Dimensions:', dim(m), '
')  # rows cols

matrix(data, nrow, ncol)

Funkcja matrix() przyjmuje wektor danych i układa go w wiersze oraz kolumny. Domyślnie R wypełnia macierz kolumna po kolumnie (w porządku kolumnowym).

# Filled column by column (default)
m_col <- matrix(1:12, nrow = 3, ncol = 4)
cat('Column-filled 3x4 matrix:
')
print(m_col)
cat('Note: 1,2,3 fill the first COLUMN, not the first row
')

byrow = TRUE — wypełnianie wierszami

Ustawienie byrow = TRUE powoduje wypełnianie macierzy wiersz po wierszu. Często jest to bardziej intuicyjne, gdy dane są postrzegane jako wiersze, podobnie jak w arkuszu kalkulacyjnym.

# Filled row by row
m_row <- matrix(1:12, nrow = 3, ncol = 4, byrow = TRUE)
cat('Row-filled 3x4 matrix:
')
print(m_row)
cat('Note: 1,2,3,4 fill the first ROW
')

# Verify byrow
m_check <- matrix(c(1,2,3,4,5,6), nrow = 2, byrow = TRUE)
print(m_check)

Macierz z wektora danych

Można utworzyć znaczącą macierz, przekazując rzeczywisty wektor danych. Jeśli wektor jest krótszy niż nrow * ncol, R będzie go powtarzać cyklicznie, ale dobrą praktyką jest podanie dokładnie odpowiedniej liczby elementów.

# Exam scores: 3 students, 4 subjects
scores_data <- c(88, 92, 75, 81,   # Student 1
                 79, 85, 90, 73,   # Student 2
                 95, 78, 82, 88)   # Student 3

exam_matrix <- matrix(scores_data, nrow = 3, ncol = 4, byrow = TRUE)
rownames(exam_matrix) <- c('Alice', 'Bob', 'Carol')
colnames(exam_matrix) <- c('Math', 'Science', 'English', 'History')
print(exam_matrix)

dim() — sprawdzanie wymiarów

dim(m) zwraca wektor numeryczny o długości 2: najpierw liczbę wierszy, a następnie liczbę kolumn. Można również użyć nrow(m) i ncol(m) do sprawdzania poszczególnych wymiarów.

m <- matrix(1:20, nrow = 4, ncol = 5)
cat('dim(m):', dim(m), '
')       # 4 5
cat('nrow(m):', nrow(m), '
')     # 4
cat('ncol(m):', ncol(m), '
')     # 5
cat('Total elements:', length(m), '
')  # 20

is.matrix() — sprawdzanie typu

is.matrix(x) zwraca TRUE, jeśli x jest macierzą. Jest to przydatne do sprawdzania danych wejściowych funkcji. Należy pamiętać, że macierz jest również tablicą (is.array() także zwraca TRUE).

m <- matrix(1:4, nrow = 2)
v <- c(1, 2, 3, 4)

cat('is.matrix(m):', is.matrix(m), '
')  # TRUE
cat('is.matrix(v):', is.matrix(v), '
')  # FALSE
cat('is.array(m): ', is.array(m), '
')   # TRUE (matrix IS an array)
cat('class(m):    ', class(m), '
')

Macierz zerowa i macierz jednostkowa

Specjalne macierze można tworzyć, powtarzając pojedynczą wartość. matrix(0, n, n) tworzy macierz zerową, a diag(n) tworzy macierz jednostkową n x n (jedynki na przekątnej, zera poza nią).

# Zero matrix 3x3
zero_mat <- matrix(0, nrow = 3, ncol = 3)
cat('Zero matrix:
')
print(zero_mat)

# Identity matrix 3x3
identity_mat <- diag(3)
cat('Identity matrix:
')
print(identity_mat)

Macierz z powtarzanych wartości

Gdy wektor danych jest krótszy niż nrow * ncol, R powtarza cyklicznie wektor (zaczyna ponownie od początku). R wyświetla ostrzeżenie, jeśli długość wektora nie dzieli rozmiaru macierzy bez reszty.

# Recycle a 2-element vector into a 4x4 matrix
alternate <- matrix(c(0, 1), nrow = 4, ncol = 4)
cat('Recycled 0,1 into 4x4:
')
print(alternate)

# Checkerboard effect: fills column by column

Podawanie tylko nrow lub ncol

Wystarczy podać jeden z argumentów: nrow lub ncol — R automatycznie obliczy drugi na podstawie długości danych. Jeśli dane nie dzielą się bez reszty, R będzie je powtarzać cyklicznie i wyświetli ostrzeżenie.

# Only specify nrow, R infers ncol
m1 <- matrix(1:12, nrow = 3)
cat('nrow=3 only, inferred ncol =', ncol(m1), '
')
print(m1)

# Only specify ncol, R infers nrow
m2 <- matrix(1:12, ncol = 4)
cat('ncol=4 only, inferred nrow =', nrow(m2), '
')

Macierz znakowa

Macierze nie są ograniczone do liczb — można tworzyć macierze znakowe na potrzeby danych kategorialnych, plansz gier lub siatek wyszukiwania. Wszystkie elementy nadal muszą jednak być tego samego typu.

# Tic-tac-toe board
board <- matrix(c('X', 'O', 'X',
                   'O', 'X', 'O',
                   'O', 'X', 'O'),
                nrow = 3, ncol = 3, byrow = TRUE)
cat('Tic-Tac-Toe board:
')
print(board)
cat('Type:', class(board), '
')

Tworzenie macierzy: podsumowanie

Oto podsumowanie sposobów tworzenia macierzy w R:

  • matrix(data, nrow, ncol) — podstawowe tworzenie (domyślnie wypełnianie kolumnami)
  • matrix(data, nrow, ncol, byrow=TRUE) — wypełnianie wiersz po wierszu
  • matrix(0, n, m) — macierz zerowa
  • diag(n) — macierz jednostkowa
  • dim(m), nrow(m), ncol(m) — sprawdzanie wymiarów
  • is.matrix(m) — sprawdzanie typu
# Quick creation reference
cat('3x2 column-fill:
'); print(matrix(1:6, 3, 2))
cat('3x2 row-fill:
');    print(matrix(1:6, 3, 2, byrow=TRUE))
cat('2x2 zeros:
');       print(matrix(0, 2, 2))
cat('3x3 identity:
');    print(diag(3))

Szybkie sprawdzenie

Domyślnie (bez byrow = TRUE) w jakiej kolejności funkcja matrix() wypełnia elementy?

Podsumowanie: tworzenie macierzy

Doskonale! Najważniejsze informacje z tej lekcji:

  • matrix(data, nrow, ncol) tworzy macierz — dane są domyślnie wstawiane kolumna po kolumnie
  • Użyj byrow = TRUE, aby wypełniać macierz wiersz po wierszu
  • Wystarczy określić nrow LUB ncol — R wywnioskuje drugą wartość
  • dim(m) zwraca c(rows, cols); nrow() i ncol() zwracają poszczególne liczby
  • is.matrix() sprawdza, czy obiekt jest macierzą
  • matrix(0, n, n) tworzy macierz zerową; diag(n) tworzy macierz jednostkową
# Full workflow: create, inspect, verify
m <- matrix(seq(2, 24, by = 2), nrow = 4, ncol = 3, byrow = TRUE)
cat('Even numbers matrix:
')
print(m)
cat('Rows:', nrow(m), '| Cols:', ncol(m), '| Elements:', length(m), '
')

Często zadawane pytania

Czy lekcja „Tworzenie macierzy za pomocą matrix()” jest bezpłatna?

Tak — pełny tekst „Tworzenie macierzy za pomocą matrix()” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu R Academy, przejdź na CoddyKit PRO. Kurs R Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Tworzenie macierzy za pomocą matrix()”?

Twórz macierze, określając dane, nrow, ncol i byrow. Ćwiczysz R Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć R Academy?

Nie wymagamy żadnego doświadczenia. R Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Tworzenie macierzy za pomocą matrix()”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji R Academy?

Tak. Każda lekcja R Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tworzenie macierzy za pomocą matrix()
  2. Indeksowanie i wybieranie podzbiorów macierzy
  3. Arytmetyka i operacje na macierzach
  4. Transponowanie i zmiana kształtu macierzy
← Powrót do R Academy