←
PDF 327 / 520 Negative values drop the elements at the specified positions:
→
English · PDF 327
Original PDF page 327
中文 · PDF 327

负值会丢弃指定位置的元素:

x[c(-1, -3, -5)] #> [1] "two" "four"

混合使用正值和负值会报错:

x[c(1, -1)] #> Error in x[c(1, -1)]: #> only 0's may be mixed with negative subscripts

错误信息提到了用零取子集,这不会返回任何值:

x[0] #> character(0)

这种用法并不常用,但如果你想创建不寻常的数据结构来测试你的函数,它可能会有所帮助。

  • 使用逻辑向量取子集会保留所有对应 TRUE 值的元素。这通常与比较函数结合使用:

x <- c(10, 3, NA, 5, 8, 1, NA)

# x 的所有非缺失值 x[!is.na(x)] #> [1] 10 3 5 8 1

# x 的所有偶数(或缺失!)值 x[x %% 2 == 0] #> [1] 10 NA 8 NA

  • 如果向量有名字,你可以用字符向量对它取子集:

x <- c(abc = 1, def = 2, xyz = 5) x[c("xyz", "def")] #> xyz def #> 5 2

与正整数类似,你也可以使用字符向量来复制单个元素。

  • 最简单的取子集方式是什么都不填,即 x[],它会返回完整的 x。这对向量取子集没什么用,但在对矩阵(以及其他高维结构)取子集时很有用,因为通过留空该索引,你可以选择所有行或所有列。例如,如果 x 是二维的,