使用数字在R中对向量进行子集

时间:2015-09-26 21:08:08

标签: r

我正在努力更好地理解索引/子集化行为。

考虑数字向量x

x <- c(1.0, 2.0)

我可以得到它的价值观:

x[1L] # the first element of a 1-indexed vector
#> [1] 1
x[2L] # the second element of a 1-indexed vector
#> [1] 2
x[3L] # the third element, which is not defined/ does not exists, so returns `NA`; ok.
#> [1] NA

但我对这些回报感到困惑:

x[1.1]
#> [1] 1
x[2.7]
#> [1] 2
x[3.1]
#> [1] NA

此外,这似乎不像我期望的那样有效:

x[2.6] <- 3.0 
x
#> [1] 1 3

有人可以帮我理解为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

好的,核心问题是我不知道的:

?`[`

正如@BondedDust指出的那样告诉你:

  

指定要提取或替换的元素的索引。索引是数字或字符向量或空(缺失)或NULL。数字值被强制转换为整数,因为as.integer(因此截断为零)。字符向量将与对象的名称(或矩阵/数组,dimnames)匹配:有关详细信息,请参阅下面的“字符索引”。

因此,行为就是这样定义的。