R - Массивы: Начальный гид по мощным структурам данных
Привет,野心勃勃ые программисты R! Я рад быть вашим проводником в этом захватывающем путешествии в мир массивов R. Как кто-то, кто teaches computer science на протяжении более чем десятилетия, я могу заверить вас, что массивы resemble Swiss Army knives of programming – универсальны, мощны и абсолютно необходимы для овладения. Так что погружаемся!
Что такое массивы?
Прежде чем мы перейдем к деталям, давайте начнем с основ. Представьте, что у вас есть коллекция книг. Вы могли бы сложить их в кучу, но это усложнило бы поиск конкретной книги. Теперь представьте полку с книгами, состоящую из множества полок и секций. Это essentially что такое массив в R – структурированный способ хранения и организации данных.
В R массив является многомерной структурой данных, которая может содержать данные того же типа. Это как super-powered версия вектора, способная хранить данные в нескольких измерениях.
Пример: Создание вашего первого массива
Давайте создадим наш первый массив! Мы будем использовать функцию array()
для этого.
my_first_array <- array(1:24, dim = c(4, 3, 2))
print(my_first_array)
Когда вы выполните этот код, вы увидите что-то вроде этого:
, , 1
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
, , 2
[,1] [,2] [,3]
[1,] 13 17 21
[2,] 14 18 22
[3,] 15 19 23
[4,] 16 20 24
Что только что произошло? Мы создали трёхмерный массив! Представьте его как две 4x3 матрицы, сложенные друг на друга. Часть dim = c(4, 3, 2)
instructs R создать массив с 4 строками, 3 столбцами и 2 "слоями" или матрицами.
Название столбцов и строк
Точно так же, как мы label наши книжные полки, чтобы easier найти книги, мы можем называть измерения нашего массива. Это делает наши данные более значимыми и easier для работы.
# Создание массива с named измерениями
student_scores <- array(
c(85, 90, 78, 92, 88, 76, 95, 87, 82),
dim = c(3, 3),
dimnames = list(
c("Alice", "Bob", "Charlie"),
c("Math", "Science", "English")
)
)
print(student_scores)
Вывод:
Math Science English
Alice 85 88 95
Bob 90 76 87
Charlie 78 92 82
Теперь наш массив имеет значимые имена строк и столбцов. Это гораздо easier понять, что Alice scored 85 по Math и 95 по English!
Доступ к элементам массива
Теперь у нас есть массив, как мы можем получить конкретные фрагменты информации из него? Это как знать точную полку и секцию, к которой нужно обратиться в нашей библиотеке.
# Доступ к одному элементу
print(student_scores["Alice", "Math"]) # Вывод: 85
# Доступ ко всей строке
print(student_scores["Bob", ]) # Вывод: Math 90 Science 76 English 87
# Доступ ко всему столбцу
print(student_scores[, "Science"]) # Вывод: Alice 88 Bob 76 Charlie 92
Манипулирование элементами массива
Массивы не только для хранения данных – мы можем изменять их! Давайте обновим некоторые оценки:
# Обновление одной оценки
student_scores["Charlie", "English"] <- 89
print(student_scores["Charlie", "English"]) # Вывод: 89
# Обновление всей строки
student_scores["Alice", ] <- c(91, 93, 97)
print(student_scores["Alice", ]) # Вывод: Math 91 Science 93 English 97
Вычисления по элементам массива
Одна из самых мощных функций массивов – это возможность выполнять вычисления по их элементам. Давайте вычислим некоторые средние значения:
# Calculate average score for each student
student_averages <- apply(student_scores, 1, mean)
print(student_averages)
# Calculate average score for each subject
subject_averages <- apply(student_scores, 2, mean)
print(subject_averages)
Функция apply()
как Swiss Army knife для массивов. Второй аргумент (1 или 2) tells R, чтобы применить функцию (в этом случае, mean
) к строкам (1) или столбцам (2).
Методы массивов
Вот таблица некоторых часто используемых методов массивов в R:
Метод | Описание | Пример |
---|---|---|
array() |
Создает массив | array(1:12, dim = c(3, 4)) |
dim() |
Получает или устанавливает измерения массива | dim(my_array) |
length() |
Получает общее количество элементов | length(my_array) |
dimnames() |
Получает или устанавливает имена измерений | dimnames(my_array) |
apply() |
Применяет функцию по границам массива | apply(my_array, 2, sum) |
sweep() |
Sweeps out array summaries | sweep(my_array, 2, colMeans(my_array)) |
Заключение
Поздравляю! Вы только что сделали свои первые шаги в мощный мир массивов R. Мы рассмотрели создание массивов, naming их измерений, доступ и манипуляцию элементами, а также выполнение вычислений по их элементам.
Помните, обучение работе с массивами похоже на организацию библиотеки. Сначала это может показаться сложным, но как только вы привыкните, вы будете amazed, как efficiently вы можете хранить, доступать и анализировать свои данные.
Продолжая свое путешествие в R, вы найдете массивы повсюду – от простого анализа данных до сложных статистических моделей. Так что продолжайте практиковаться, stay curious и не бойтесь экспериментировать. Счастливого кодирования, и пусть ваши массивы всегда будут хорошо организованы!
Credits: Image by storyset