Как преобразовать фрейм данных в матрицу в R (с примерами)


Вы можете использовать один из следующих методов для преобразования фрейма данных в матрицу в R:

Метод 1: преобразование фрейма данных числовых столбцов в матрицу

mat <- as.matrix(df)

Метод 2: преобразование фрейма данных с символами/факторами в матрицу

mat <- data.matrix(df)

Обратите внимание, что оба метода используют функции из базы R, поэтому вам не нужно устанавливать какие-либо внешние пакеты для использования этих методов.

В следующих примерах показано, как использовать каждый метод на практике.

Метод 1: преобразование фрейма данных числовых столбцов в матрицу

Предположим, у нас есть следующий фрейм данных в R, который содержит только числовые столбцы:

#create data frame
df <- data.frame(points=c(99, 90, 86, 88, 95),
 assists=c(33, 28, 31, 39, 34),
 rebounds=c(30, 28, 24, 24, 28))

#view data frame
df

 points assists rebounds
1 99 33 30
2 90 28 28
3 86 31 24
4 88 39 24
5 95 34 28

Мы можем использовать функцию as.matrix() для быстрого преобразования этого фрейма данных в числовую матрицу:

#convert data frame to matrix
mat <- as.matrix(df)

#view matrix
mat

 points assists rebounds
[1,] 99 33 30
[2,] 90 28 28
[3,] 86 31 24
[4,] 88 39 24
[5,] 95 34 28

#view class of mat
class(mat)

[1] "matrix" "array"

С помощью функции class() мы подтверждаем, что новый объект действительно является матрицей.

Метод 2: преобразование фрейма данных с символами/факторами в матрицу

Предположим, у нас есть следующий фрейм данных в R, который содержит как символьные, так и числовые столбцы:

#create data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'C'),
 points=c(99, 90, 86, 88, 95),
 assists=c(33, 28, 31, 39, 34))

#view data frame
df

 team points assists
1 A 99 33
2 A 90 28
3 B 86 31
4 B 88 39
5 C 95 34

Мы можем использовать функцию data.matrix() , чтобы быстро преобразовать этот фрейм данных в числовую матрицу:

#convert data frame to matrix
mat <- data.matrix(df)

#view matrix
mat

 team points assists
[1,] 1 99 33
[2,] 1 90 28
[3,] 2 86 31
[4,] 2 88 39
[5,] 3 95 34

#view class of mat
class(mat)

[1] "matrix" "array"

С помощью функции class() мы подтверждаем, что новый объект действительно является матрицей.

Мы также можем ввести следующее:

?data.matrix

Что говорит нам:

Description:
 Return the matrix obtained by converting all the variables in a
 data frame to numeric mode and then binding them together as the
 columns of a matrix. Factors and ordered factors are replaced by
 their internal codes.

Это объясняет, почему названия команд A, A, B, B, C были преобразованы в значения 1, 1, 2, 2, 3.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в R:

Как преобразовать столбец фрейма данных в вектор в R
Как преобразовать матрицу в вектор в R
Как преобразовать таблицу во фрейм данных в R