
数据结构
|
141
cat(years[[1]], "\n")
#> 1960
cat(years[1], "\n")
#> Error in cat(years[1], "\n"): argument 1 (type 'list')
#> cannot be handled by 'cat'
很幸运,R 对这个问题做出了警告。在其他情况下,可能在经历漫长而艰辛的努力后发
现你访问了一个子表而并非你想要的某个元素,反之亦然。
5.8 根据名称选定列表元素
5.8.1 问题
需要根据名称访问一个列表的元素。
5.8.2 解决方案
有以下方法可供选定。下面的例子中 lst 是一个列表:
lst[["
name
"]]
选择名为
name
的元素。如果列表中没有元素具有该名称,则返回 NULL。
lst$
name
与之前相同,只是语法不同。
lst[c(
name
1
,
name
2
, ... ,
name
k
)]
返回一个由函数 lst 中的参数所决定的元素构建的列表。
注意,前两个例子返回一个元素,而第三个例子返回一个列表。
5.8.3 讨论
列表的每个元素都可以有一个名称。如果列表元素已命名,则可以通过其名称选择元
素。下面的例子创建了一个包含四个命名整数的列表:
years <- list(Kennedy = 1960, Johnson = 1964,
Carter = 1976, Clinton = 1994)
以下两个表达式返回相同的值
—
名为“Kennedy ”的元素:
years[["Kennedy"]]
#> [1] 1960
years$Kennedy ...