Для создания списков в R служит одноименная функция list(). Рассмотрим пример:
# Cначала создадим три разнотипных вектора - с текстовыми, # числовыми и логическими значениями: vector1 <- c("A", "B", "C") vector2 <- seq(1, 3, 0.5) vector3 <- c(FALSE, TRUE) # Теперь объединим эти три вектора в один объект-список, # компонентам которого присвоим имена Text, Number и Logic: my.list <- list(Text=vector1, Number=vector2, Logic=vector3) # Просмотрим содержимое созданного списка: > my.list $Text [1] "A" "B" "C" $Number [1] 1.0 1.5 2.0 2.5 3.0 $Logic [1] FALSE TRUE
Как и в случае с векторами и матрицами, мы можем извлекать определенные элементы списков путем индексирования. Для обращения к поименованным компонентам списков применяют знак $. Так, для извлечения компонентов Text, Number и Logic из созданного нами списка my.list необходимо последовательно ввести следующие команды:
Имеется возможность извлекать из списка не только его поименованные компоненты-векторы, но и отдельные элементы, входящие в эти векторы. Для этого необходимо воспользоваться уже рассмотренным ранее способом – индексацией при помощи квадратных скобок. Единственная особенность работы со списками здесь состоит в том, что сначала необходимо указать имя компонента списка, используя знак $, а уже затем номер(а) отдельных элементов этого компонента:
my.list$Text [1] "A" "B" "C" my.list$Number [1] 1.0 1.5 2.0 2.5 3.0 my.list$Logic [1] FALSE TRUE
Имеется возможность извлекать из списка не только его поименованные компоненты-векторы, но и отдельные элементы, входящие в эти векторы. Для этого необходимо воспользоваться уже рассмотренным ранее способом – индексацией при помощи квадратных скобок. Единственная особенность работы со списками здесь состоит в том, что сначала необходимо указать имя компонента списка, используя знак $, а уже затем номер(а) отдельных элементов этого компонента:
my.list$Text[2] [1] "B" my.list$Number[3:5] [1] 2.0 2.5 3.0 my.list$Logic[1] [1] FALSE
Извлечение компонентов списка можно осуществлять также с использованием двойных квадратных скобок, в которые заключается номер компонента списка:
my.list[[1]] [1] "A" "B" "C" my.list[[2]] [1] 1.0 1.5 2.0 2.5 3.0 my.list[[3]] [1] FALSE TRUE
После двойных квадратных скобок с индексным номером компонента списка можно также указать номер(а) отдельных элементов этого компонента:
my.list[[1]][2] [1] "B" my.list[[2]][3:5] [1] 2.0 2.5 3.0 my.list [[3]][1] [1] FALSE
Созданный нами список my.list содержал всего лишь три небольших вектора, и мы знали, какие это векторы, и на каком месте в списке они стоят. Однако на практике можно столкнуться с гораздо более сложно организованными списками, индексирование которых может быть затруднено из-за отсутствия представлений об их структуре. Для выяснения структуры объектов в языке R имеется специальная функция str() (от structure):
str(my.list) List of 3 $ Text : chr [1:3] "A" "B" "C" $ Number: num [1:5] 1 1.5 2 2.5 3 $ Logic : logi [1:2] FALSE TRUE
Из приведенного примера следует, что список my.list состоит из 3 компонентов (List of 3) с именами Text, Number и Logic (перечислены на отдельных строках после знака $). Эти компоненты относятся к текстовому (chr), числовому (num) и логическому (logiс) типам векторов соответственно. Кроме того, команда str() выводит на экран первые несколько элементов каждого вектора.
--
Отправить комментарий