Понимание индексации списков и соглашений о скобках в R

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

#Make an example list "L" containing different types of data
x<- matrix(1:12,3,4)
y<- seq(2,17,3)
z<- list(letters[1:5],LETTERS[1:5],letters[6:10],LETTERS[6:10])
L<- list(x,y,z)

Верхний уровень индексации: L - список, содержащий 3 элемента: x, y и z. Чтобы увидеть элемент в списке, вы используете двойные скобки.

#see matrix x, the first element of list L
x
L[[1]]

Второй уровень индексации: просто добавьте индексы для любого типа данных, в котором находится элемент, после двойных скобок, указывающих этот элемент.

#List L's first element is matrix x, see x's row 2 column 3 value:
x[2,3]
L[[1]][2,3]
#List L's second element is vector y, see y's 4th value:
y[4]
L[[2]][4]
#List L's third element is list z, see z's first element:
z[[1]]
L[[3]][[1]]

3-й уровень индексации: просто продолжайте добавлять скобки для каждого уровня.

#List L's third element is list z, list z's first element is vector letters[1:5],
#see list z's first element's fifth value:
letters[1:5][5]
z[[1]][5]
L[[3]][[1]][5]

ХОРОШО. Так что все достаточно просто. Вы используете [[element]] для списков и [row, column] для матриц и [index] для векторов. Мои вопросы о том, когда вы не делаете.

Вопросы:

Если вы используете двойную скобку для матриц и векторов, она все еще работает.Так есть ли разница между одинарной и двойной скобкой для матриц и векторов?

Если вы используете одну скобку со списком, она все еще работает. Но вместо возврата (как [[1]]) первого элемента в качестве этого элемента, [1] возвращает список, содержащий элемент 1. Таким образом, вы можете использовать list [c (elements)], чтобы получить список с подмножеством элементы.Есть ли какая-либо другая причина, по которой вы бы использовали одинарные скобки со списком?

Я не особо затронул здесь данные, которые являются типом списка. Но они имеют форму матриц, и вы также можете видеть значения, используя [row, column], как с матрицами.Есть ли какая-либо опасность при использовании индексации [row, column] с фреймами данных?

примечание: предыдущие обсуждения были очень полезны, но не ответили на эти конкретные вопросы:Как правильно использовать списки в R? Разница между нотациями [] и [[]] для доступа к элементам списка или фрейма данных

Ответы на вопрос(0)

Ваш ответ на вопрос