Структура данных списка встречается во многих различных языках программирования. В R списки особенно полезны, когда вы хотите суммировать данные, принадлежащие разным типам данных R.
- Для чего используются R-списки?
- Создать список в R: Как создавать списки R
- list() function
- Создание списков из векторов
- Преобразование списков в другие структуры данных
- R-List to Vector: как создавать векторы из списков
- R-List в фрейм данных: конвертируйте списки в фреймы данных
- Доступ к элементам в R-списках
- Доступ через индекс
- Доступ через имена элементов
- Список функций в R: наиболее важные функции
- append()
- length()
- concatenation with c()
- names()
Для чего используются R-списки?
Списки — это универсальная структура данных, которая также является отдельным типом данных в R. Списки особенно подходят в средах динамического программирования, т. е. когда необходимо гибко добавлять и удалять элементы различных типов данных. В отличие от R-векторов, для элементов списка не имеет значения, какого они типа данных: возможность смешивать типы данных в списке является одним из основных преимуществ R-списков. Поскольку вы можете вкладывать списки по своему усмотрению, можно использовать R-списки для представления сложных проблем в исходном коде.
Создать список в R: Как создавать списки R
list() function
Чтобы создать простой R-список, вы можете list()использовать одноименную функцию, передавая ей элементы для добавления в ваш список.
liste <- list(1, TRUE, "Hallo Welt!", c(1,2,3,4))
В этом примере кода был создан список из четырех значений. Как видите, эти значения не имеют одинакового типа данных и их все равно можно сгруппировать в один список.
Вы также можете создать список именованных элементов в R. Это обеспечивает легкий доступ к определенным элементам из вашего R-списка.
person <-list(name = "Max Mustermann", alter = 27, hobbys = c("Programmieren, Kino"))
Вы также можете передавать в качестве элементов другие списки и таким образом, например, объединять разные списки в одну запись данных:
personen <- list(list(name = "Max Mustermann", alter = 27, hobbys = c("Programmieren, Kino")), list(name = "Mia Musterfrau", alter = 32, hobbys = c("Theater, Computerspiele")), list(name = "Mika Mustermensch", alter =23, hobbys = c("Sport, Musik")))
Создание списков из векторов
Вы также можете создавать списки из векторов R, преобразуя их в список. R также предоставляет функцию для этого.
vektor <- c(1,2,3,4) liste <- as.list(vektor)
Преобразование списков в другие структуры данных
Хотя R-списки представляют собой универсальную структуру данных, для определенных целей вам могут понадобиться другие структуры данных, такие как векторы или фреймы данных. Если да, просто преобразуйте свой список.
R-List to Vector: как создавать векторы из списков
Если вы хотите превратить свой список в R-вектор, используйте функцию. Это принимает R-List в качестве параметра передачи и преобразует его в вектор. Список, который вы передаете функции, также может быть многомерным. Вызов часто бывает полезен, когда вы хотите представить сложные иерархии в простой векторной форме.unlist()unlist()
liste <- list(1, 2, 3, 4) vektor <- unlist(liste)
Преобразование списка, содержащего данные разных типов данных, в вектор может привести к нежелательному и неопределенному поведению, поскольку по умолчанию векторы в R могут хранить только данные одного и того же типа данных. Поэтому вызов рекомендуется только в том случае, если элементы в вашем списке имеют одинаковый тип данных.unlist()
В следующем примере кода все значения из списка преобразуются в тип данных для хранения в векторе characterR.
liste <- list(1, TRUE, "Hallo Welt!", c(1,2,3,4)) vektor <- unlist(liste)
R-List в фрейм данных: конвертируйте списки в фреймы данных
Кадры данных R используются, помимо прочего, для табличного представления наборов данных. Поэтому многомерные списки, в частности, могут быть с пользой преобразованы в кадры данных R. Следует отметить, что списки должны иметь одинаковое количество элементов. R предоставляет функцию преобразования списка R в кадр данных, которая ожидает преобразования списка в качестве параметра передачи.data.frame()
personen <- list(name=c("Max", "Mia", "Mika"), alter=c(27, 32, 23)) tabelle <- data.frame(personen) print(tabelle)
Фрейм данных, созданный приведенным выше кодом, выглядит следующим образом:
name alter
1 Max 27
2 Mia 32
3 Mika 23
Доступ к элементам в R-списках
Для доступа к элементам в вашем списке вы можете использовать индекс или, если доступно, имя нужного элемента.
Доступ через индекс
Для доступа к элементам списка вам понадобится оператор R, в который вы поместите индекс или имя.[[]]
liste <- list(1, TRUE, "Hallo Welt!", c(1,2,3,4)) print(liste[[2]])
Этот код возвращает TRUE, который является вторым элементом в списке. Обратите внимание, что индексация в R начинается с единицы. Если у вас есть предыдущий опыт программирования и вы не просто учитесь программировать, это место, где можно быстро совершить ошибку, поскольку в большинстве других языков программирования индексирование начинается с нуля.
Доступ через имена элементов
Как уже упоминалось, элементам списка в R можно давать имена. При необходимости эти имена можно использовать для доступа к элементам. Существует два разных способа доступа к элементу по имени: вы можете использовать двойные квадратные скобки в сочетании с именем элемента в виде строки R или использовать знак доллара, за которым следует имя элемента. Пример кода помогает проиллюстрировать:
person <-list(name = "Max Mustermann", alter = 27, hobbys = c("Programmieren, Kino")) print(person[["name"]]) print(person$name)
В обоих случаях оператор печати выводится «Max Mustermann«на экран.
Список функций в R: наиболее важные функции
При работе со списками существует ряд полезных функций R, которые помогают выполнять определенные операции.
append()
С помощью вы можете добавлять элементы в конец списка. Функция ожидает список, к которому должен быть добавлен элемент, в качестве первого параметра передачи, а элемент, который должен быть вставлен, в качестве второго параметра.append()
liste <-list(1,2,3,4) append(liste, 5)
Функция -List в R — не единственный способ добавить элементы в список. Обозначение индекса с двойными квадратными скобками, в котором вы используете индекс, который еще не существует, часто работает быстрее:append()
liste <-list(1,2,3,4) liste[[5]] <-5
length()
Вы можете узнать, сколько элементов содержит ваш список, вызвав команду R. Функция ожидает список, длина которого вас интересует, в качестве параметра передачи.length()
liste <- list(1,2,3,4) print(length(liste))
concatenation with c()
В R вы можете объединить два списка в один. Для этого используйте функцию, которая принимает оба списка в качестве параметров и возвращает объединенный список.c()
liste1 <- list(1,2,3,4) liste2 <- list(5,6,7,8) liste_konkateniert <- c(liste1, liste2)
names()
Если вы создали R-список с именами, используйте функцию R-List для отображения названий объектов в вашем списке. Функция ожидает список в качестве параметра передачи.names()
person <-list(name = "Max Mustermann", alter = 27, hobbys = c("Programmieren, Kino")) bezeichner <- names(person)








