←
PDF 328 / 520 Exercises
→
English · PDF 328
Original PDF page 328
中文 · PDF 328

x[1, ] 选择第一行和所有列,而 x[, -1] 选择所有行和除第一列之外的所有列。

要了解更多关于子集选取的应用,请阅读 "Subset‐ ting"(子集选取)一章,出自 Advanced R。

[ 有一个重要的变体 [[。[[ 只提取单个元素,并且总是去掉名称。当你想明确表示自己正在提取单个元素时(例如在 for 循环中),使用它是个好主意。[ 和 [[ 的区别对列表最为重要,我们很快就会看到。

练习

    1. mean(is.na(x)) 能告诉你关于向量 x 的什么信息?那 sum(!is.finite(x)) 呢?
    1. 仔细阅读 is.vector() 的文档。它实际测试的是什么?为什么 is.atomic() 与上面原子向量的定‐ 义不一致?
    1. 比较并对比 setNames() 与 purrr::set_names()。
    1. 创建一些函数,它们接受一个向量作为输入并返回:
    • a. 最后一个值。你应该使用 [ 还是 [[?
    • b. 位于偶数位置的元素。
    • c. 除最后一个值之外的每个元素。
    • d. 仅偶数(且没有缺失值)。
    1. 为什么 x[-which(x > 0)] 与 x[x <= 0] 不相同?
    1. 当你用一个大于向量长度的正整数进行子集选取时会发生什么?当你用一个不存在的名称进行子集选取时又会发生什么?

递归向量(列表)

列表比原子向量更复杂一层,因为列表可以包含其他列表。这使它们适合表示层次结构或树状结构。你可以用 list() 创建列表:

x <- list(1, 2, 3) x #> [[1]]