R - Массивы: Начальный гид по мощным структурам данных

Привет,野心勃勃ые программисты R! Я рад быть вашим проводником в этом захватывающем путешествии в мир массивов R. Как кто-то, кто teaches computer science на протяжении более чем десятилетия, я могу заверить вас, что массивы resemble Swiss Army knives of programming – универсальны, мощны и абсолютно необходимы для овладения. Так что погружаемся!

R - Arrays

Что такое массивы?

Прежде чем мы перейдем к деталям, давайте начнем с основ. Представьте, что у вас есть коллекция книг. Вы могли бы сложить их в кучу, но это усложнило бы поиск конкретной книги. Теперь представьте полку с книгами, состоящую из множества полок и секций. Это 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