在R中命名的元素操作

时间:2017-02-17 04:16:23

标签: r

我是R的初学者并提前道歉提出了一个基本问题,但我无法在谷歌的任何地方找到答案(也许是因为这个问题非常基本,我甚至不知道如何正确搜索它..:D)

所以,如果我在R中执行以下操作:

v = c(50, 25)
names(v) = c("First", "Last") 
v["First"]/v["Last"]

我得到的输出为:

First 
    2

为什么名称“First”出现在输出中以及如何摆脱它?

1 个答案:

答案 0 :(得分:8)

来自help("Extract"),这是因为

  

子集(除了空索引)将删除除namesdimdimnames之外的所有属性。

  

通常的索引形式是[[[可用于选择丢弃names的单个元素,而[会将其保留在c(abc = 123)[1]中。

由于我们选择单个元素,您可以切换到双括号索引[[,名称将被删除。

v[["First"]] / v[["Last"]]
# [1] 2

对于使用单括号索引时保留的名称,看起来它始终是第一个(至少使用/运算符)。我们必须深入研究C源以获得进一步的解释。如果我们切换订单,我们仍会得到结果的第一个名字。

v["Last"] / v["First"]
# Last 
#  0.5