我几乎理解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]]
第三级索引:只需继续为每个级别添加括号。
#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)]来获得一个包含子元素的列表元素。 您是否还有其他理由将单括号与列表一起使用?
我并没有真正触及数据帧,这是一种列表。但它们的形状类似于矩阵,您也可以使用[行,列]和矩阵一起查看值。 有没有&#34;危险&#34;使用[row,column]索引与数据帧?
注意:之前的讨论非常有用,但没有回答这些具体问题:How to Correctly Use Lists in R? The difference between [] and [[]] notations for accessing the elements of a list or dataframe