English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Списки в R

Списки являются объектами R, которые могут использоваться для хранения различных типов данных, таких как числа, строки, векторы, другой список и т.д., конечно, также могут содержать матрицы и функции.

В R языке списки создаются с помощью функции list()

Как в следующем примере, мы создаем список, который содержит строки, векторы и числа:

list_data <- list("w3codebox", "google", c(11,22,33), 123, 51.23, 119.1)
print(list_data)

Результат выполнения вышеуказанного кода:

[[1]]
[1] "w3codebox"
[[2]]
[1] "google"
[[3]]
[1] 11 22 33
[[4]]
[1] 123
[[5]]
[1] 51.23

Мы можем использовать функцию names() для присвоения имен элементам списка:

# Список содержит векторы, матрицы, списки
list_data <- list(c("Google", "w3codebox", "Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
   list("w3codebox", 12.3))
# Назначение имен элементам списка
names(list_data) <- c("Sites", "Numbers", "Lists")
# Показ списка
print(list_data)

Результат выполнения вышеуказанного кода:

$Sites
[1] "Google" "w3codebox" "Taobao"
$Numbers
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
$Lists
$Lists[[1]]
[1] "w3codebox"
$Lists[[2]]
[1] 12.3

Доступ к списку

Элементы списка можно доступа через индекс, если использовать names() После присвоения имени функции, мы можем использовать соответствующее имя для доступа:

# Список содержит векторы, матрицы, списки
list_data <- list(c("Google", "w3codebox", "Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
   list("w3codebox", 12.3))
# Назначение имен элементам списка
names(list_data) <- c("Sites", "Numbers", "Lists")
# Показ списка
print(list_data[1])
# Доступ к третьему элементу списка
print(list_data[3])
# Доступ к первому вектору
print(list_data$Numbers)

Результат выполнения вышеуказанного кода:

$Sites
[1] "Google" "w3codebox" "Taobao"
$Lists
$Lists[[1]]
[1] "w3codebox"
$Lists[[2]]
[1] 12.3
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Операции с элементами списка

Мы можем выполнять операции добавления, удаления и обновления списков, например:

# Список содержит векторы, матрицы, списки
list_data <- list(c("Google", "w3codebox", "Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
   list("w3codebox", 12.3))
# Назначение имен элементам списка
names(list_data) <- c("Sites", "Numbers", "Lists")
# Добавление элемента
list_data[4] <- "новый элемент"
print(list_data[4])
# Удаление элемента
list_data[4] <- NULL
# Удаление после вывода становится NULL
print(list_data[4])
# Обновление элемента
list_data[3] <- "Я заменяю третий элемент"
print(list_data[3])

Результат выполнения вышеуказанного кода:

[[1]]
[1] "Новый элемент"
$<NA>
NULL
$Lists
[1] "Я заменяю третий элемент"

Объединение списков

Можно использовать функцию c() для объединения нескольких списков в один список:

# Создание двух списков
list1 <- list(1, 2, 3)
list2 <- list("Google", "w3codebox", "Taobao")
# Объединение списков
merged.list <- c(list1, list2)
# Показать объединенный список
print(merged.list)

Результат выполнения вышеуказанного кода:

[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] "Google"
[[5]]
[1] "w3codebox"
[[6]]
[1] "Taobao"

Преобразование списка в вектор

Чтобы преобразовать список в вектор, можно использовать функцию unlist(), которая позволяет легко выполнять арифметические операции:

# Создание списка
list1 <- list(1:5)
print(list1)
list2 <- list(10:14)
print(list2)
# Преобразование списка в вектор
v1 <- unlist(list1)
v2 <- unlist(list2)
print(v1)
print(v2)
# Сумма двух векторов
result <- v1 + v2
print(result)

Результат выполнения вышеуказанного кода:

[[1]]
[1] 1 2 3 4 5
[[1]]
[1] 10 11 12 13 14
[1] 1 2 3 4 5
[1] 10 11 12 13 14
[1] 11 13 15 17 19