Технически списки являются векторами, хотя очень немногие используют этот термин. «список» - это один из нескольких режимов, другие - «логический», «символьный», «числовой», «целочисленный». То, что вы называете векторами, является «атомарными векторами» в строгом выражении R:
aaa <- vector("list", 3)
is.list(aaa) #TRUE
is.vector(aaa) #TRUE
Списки являются «рекурсивным» типом (векторов), тогда как атомарные векторы - нет:
is.recursive(aaa) # TRUE
is.atomic(aaa) # FALSE
Вы обрабатываете объекты данных с различными функциями в зависимости от того, являются ли они рекурсивными, атомарными или имеют размерные атрибуты (матрицы и массивы). Однако я не уверен, что обсуждение «преимуществ и недостатков» различных структур данных является достаточно сфокусированным вопросом для SO. Чтобы добавить к тому, что сказал Томми, помимо списков, способных содержать произвольное количество других векторов, есть доступность фреймов данных, которые представляют собой особый тип списка, который имеет размерный атрибут, который определяет его структуру. В отличие от матриц и массивов, которые на самом деле представляют собой свернутые атомарные объекты, фреймы данных могут содержать различные типы, включая типы факторов.
Также есть предостережение, что is.vector
функция будет возвращать, FALSE
когда есть атрибуты, отличные от имен. Смотрите: что такое вектор?
key
s в векторах, используяnames
метод.Ответы на этот и аналогичные вводные вопросы можно найти на http://www.burns-stat.com/pages/Tutor/hints_R_begin.html.
Это должно быть мягкое введение, которое поможет вам как можно быстрее приступить к работе с R. В какой-то степени это удается.
--- Редактировать: --
Попытка объяснить дальше; цитируется из приведенной выше ссылки.
Также перейдите по этой ссылке.
источник
список включает несколько типов данных, таких как символьные, числовые, логические и т. д. но вектор содержит только данные аналогичного типа. например:
для списка:
что означает список, содержащий несколько типов данных, таких как числовой, символьный и логический в mylist, но в векторе будет один тип данных для всех элементов в этом векторе
например:
для вектора:
источник