【发布时间】:2021-07-25 06:54:14
【问题描述】:
可以通过以下方式使用字符来索引命名向量:
v <- c(a=9, b=8, c=7)
v[["a"]] # Returns: 9
我正在阅读 R 语言定义,§ 3.4.1 Indexing by vectors,这似乎是说美元符号 ($) 可用于访问命名向量的内容:
R 允许使用向量作为索引进行一些强大的构造。我们将首先讨论简单向量的索引。为简单起见,假设表达式为
x[i]。那么根据i的类型存在以下几种可能。[...]
- 字符。
i中的字符串与x的名称属性匹配,并使用生成的整数。对于[[和$,如果完全匹配失败,则使用部分匹配,因此如果x不包含名为"aa"的组件,x$aa将匹配x$aabb,并且"aabb"是唯一具有前缀的名称"aa"。 [...]
所以我尝试通过以下方式使用$:
v <- c(a=9, b=8, c=7)
v$a
但是,我收到一个错误:
Error in v$a : $ operator is invalid for atomic vectors
这是什么意思?我一定是误解了上面R语言定义的摘录。
【问题讨论】:
-
可以使用
$索引列表v <- list(a=9, b=8, c=7)。无法使用$符号对向量进行索引。 -
@RonakShah 如果是这样,那为什么正文会说“我们将首先讨论简单向量的索引”?
-
该部分的主旨是讨论 x[i] 的用法,在这里随便提到 $ 有点奇怪。 $ 描述的行为适用于 $ 的行为,这不适用于原子向量(通常由 c() 构造(有关详细信息,请参见 ?is.atomic)并在您的错误消息中提到)。所描述的行为将适用于列表,我相信环境,例如
-
该部分的重点是索引 by 向量。没有提到我们正在索引向量、列表或其他任何东西。
-
@RonakShah 但在
x$aaaa是一个名称,而不是一个向量。所以引用确实不合适。
标签: r