📜  在 R 编程中返回逻辑对象的真实索引 - which()函数(1)

📅  最后修改于: 2023-12-03 15:23:18.116000             🧑  作者: Mango

在 R 编程中返回逻辑对象的真实索引 - which()函数

在 R 编程中,有时需要查找逻辑对象中满足某些条件的元素的索引,这时可以使用 which() 函数。which() 函数返回一个向量,包含逻辑对象中为真的元素的索引。下面介绍如何使用 which() 函数以及其常见参数的用法。

基本用法

which() 函数的基本用法非常简单,只需要将逻辑对象作为它的参数即可。下面是一个简单的例子:

# 创建一个逻辑向量
x <- c(TRUE, FALSE, TRUE, FALSE)

# 查找为真的元素的索引
which(x)

输出结果为:

[1] 1 3

说明在逻辑对象 x 中,第 1 和第 3 个元素为真。

参数用法

which() 函数有几个常见的参数用法,包括:

  • arr.ind:一个逻辑值变量,指示返回值是一个索引向量还是一个矩阵;
  • useNames:一个逻辑值变量,指示是否返回索引的名称而不是简单的数字值;
  • not:一个逻辑值变量,指示是否查找逻辑对象中为假的元素的索引。

下面对这些参数的用法进行说明。

arr.ind

如果将 arr.ind 设置为 TRUE,which() 函数将返回一个矩阵,包含满足条件的元素的行和列索引。下面是一个例子:

# 创建一个二维逻辑矩阵
x <- matrix(c(TRUE, FALSE, TRUE, FALSE), nrow = 2)

# 查找为真的元素的索引(矩阵形式)
which(x, arr.ind = TRUE)

输出结果为:

     row col
[1,]   1   1
[2,]   2   1

说明在逻辑矩阵 x 中,位于第 1 行 1 列和第 2 行 1 列的元素为真。

useNames

如果将 useNames 设置为 TRUE,which() 函数将返回一个命名向量,其中元素的名称是满足条件的元素的名称。下面是一个例子:

# 创建一个命名逻辑向量
x <- c(A = TRUE, B = FALSE, C = TRUE, D = FALSE)

# 查找为真的元素的索引(命名形式)
which(x, useNames = TRUE)

输出结果为:

A C 
1 3 

说明在逻辑向量 x 中,A 和 C 元素为真。

not

如果将 not 设置为 TRUE,which() 函数将返回逻辑对象中为假的元素的索引。下面是一个例子:

# 创建一个逻辑向量
x <- c(TRUE, FALSE, TRUE, FALSE)

# 查找为假的元素的索引
which(!x, not = TRUE)

输出结果为:

[1] 2 4

说明在逻辑向量 x 中,第 2 和第 4 个元素为假。

注意,在使用 not 参数时,通常需要将逻辑对象用括号括起来以确保逻辑表达式的运算顺序正确。

总结

which() 函数是一个非常有用的函数,可以帮助用户查找逻辑对象中满足条件的元素的索引。在使用 which() 函数时,需要注意其参数的用法,以便正确地返回所需的结果。