←
PDF 326 / 520 Naming Vectors
→
English · PDF 326
Original PDF page 326
中文 · PDF 326

tibble(x = 1:4, y = rep(1:2, each = 2)) #> # 一个 tibble:4 × 2 #> x y #> #> 1 1 1 #> 2 2 1 #> 3 3 2 #> 4 4 2

向量命名

所有类型的向量都可以命名。你可以在用 c() 创建时命名:

c(x = 1, y = 2, z = 4) #> x y z #> 1 2 4

也可以事后用 purrr::set_names() 命名:

set_names(1:3, c("a", "b", "c")) #> a b c #> 1 2 3

命名向量在子集选取时最为有用,接下来会介绍。

子集选取

到目前为止,我们一直使用 dplyr::filter() 来筛选 tibble 中的行。fil ter() 只能用于 tibble,所以对于向量我们需要一个新工具:[。[ 是子集选取函数,调用方式类似于 x[a]。你可以用四类东西对向量进行子集选取:

  • 一个只包含整数的数值向量。这些整数必须全为正数、全为负数或全为零。

用正整数进行子集选取会保留这些位置上的元素:

x <- c("one", "two", "three", "four", "five") x[c(3, 2, 5)] #> [1] "three" "two" "five"

通过重复某个位置,你实际上可以生成比输入更长的输出:

x[c(1, 1, 5, 5, 5, 2)] #> [1] "one" "one" "five" "five" "five" "two"