📅  最后修改于: 2023-12-03 15:09:09.578000             🧑  作者: Mango
在 R 中,向量是最基本的数据结构之一。这篇文章将介绍如何通过位置过滤向量。
假设有一个向量 vec
,我们想提取其中的第 1、3、5 个元素。可以使用下标操作符 [ ]
和向量 c()
组合实现:
vec <- c(1, 2, 3, 4, 5)
vec[c(1, 3, 5)]
输出为:
[1] 1 3 5
你可以指定任意数量的位置。
如果你只想从向量中选取符合特定条件的元素,可以使用布尔向量进行下标操作:
vec <- c(1, 2, 3, 4, 5)
mask <- c(TRUE, FALSE, TRUE, FALSE, TRUE)
vec[mask]
输出为:
[1] 1 3 5
可以看到,只保留了布尔向量中为 TRUE
的对应元素。
如何生成布尔向量呢?下面是几个常用的方法:
==
或 !=
操作符:vec <- c(1, 2, 3, 4, 5)
mask <- vec == 3
mask
输出为:
[1] FALSE FALSE TRUE FALSE FALSE
可以看到,只有第 3 个元素等于 3,因此返回了 TRUE
。
<
、<=
、>
、>=
:vec <- c(1, 2, 3, 4, 5)
mask <- vec > 2
mask
输出为:
[1] FALSE FALSE TRUE TRUE TRUE
可以看到,大于 2 的元素都返回了 TRUE
。
&
(与)、|
(或)和 !
(非):vec <- c(1, 2, 3, 4, 5)
mask <- (vec > 2) & (vec < 5)
mask
输出为:
[1] FALSE FALSE TRUE TRUE FALSE
可以看到,大于 2 且小于 5 的元素都返回了 TRUE
。
通过本文,你学会了如何按位置过滤向量。你还学会了如何使用布尔向量过滤和生成。希望此篇文章能够帮助你学习 R 编程语言。