📌  相关文章
📜  R 中的 which()函数(1)

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

R中的which()函数

which()是在R语言中常用的函数之一,其作用是找出符合给定条件的元素的下标位置。以下是该函数的语法和参数:

which(x, arr.ind = FALSE, useNames = TRUE)
  • x:需要查找的向量、矩阵或数组。
  • arr.ind:逻辑参数,若为TRUE,则返回下标的行列形式;若为FALSE,则返回下标的向量形式。
  • useNames:逻辑参数,若为TRUE,则返回的下标带有names属性,可以直接用来访问原向量、矩阵或数组。若为FALSE,则不带有names属性,需要手动将下标应用到相应的对象上。

下面是一些实际的例子。

示例1:查找向量中符合条件的元素下标
x <- c(1, 3, 5, 7, 9)
which(x > 5)

输出结果为:

[1] 4 5

这意味着向量x中第4个和第5个元素大于5。

示例2:查找矩阵中符合条件的元素下标
m <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
which(m %% 2 == 0, arr.ind = TRUE)

输出结果为:

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

这意味着矩阵m中第1行第2列、第2行第1列和第1行第3列的元素为偶数。

示例3:查找数组中符合条件的元素下标
a <- array(1:24, dim = c(2, 3, 4))
which(a %% 3 == 0, arr.ind = TRUE, useNames = FALSE)

输出结果为:

     dim1 dim2 dim3
[1,]    1    2    2
[2,]    1    3    2
[3,]    2    1    3
[4,]    1    2    4
[5,]    1    3    4
[6,]    2    1    1
[7,]    1    2    3
[8,]    1    3    3
[9,]    2    1    2
[10,]   1    2    1
[11,]   1    3    1
[12,]   2    1    4

这意味着数组a中有12个元素可以被3整除,它们的下标分别为:

[1] "(1,2,2)" "(1,3,2)" "(2,1,3)" "(1,2,4)" "(1,3,4)" "(2,1,1)" 
[7] "(1,2,3)" "(1,3,3)" "(2,1,2)" "(1,2,1)" "(1,3,1)" "(2,1,4)"

由于此时useNames参数为FALSE,因此上述下标需要手动应用于a数组。

综上,which()函数在R中有着广泛的应用,可以快速地查找符合条件的元素下标,节省程序员的时间和精力。