当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R which 哪些指数是正确的?


R语言 which 位于 base 包(package)。

说明

给出逻辑对象的 TRUE 索引,允许数组索引。

用法

which(x, arr.ind = FALSE, useNames = TRUE)
arrayInd(ind, .dim, .dimnames = NULL, useNames = FALSE)

参数

x

logical 向量或数组。 NA 是允许的,但可以省略(如同 FALSE 一样处理)。

arr.ind

逻辑性;当 x 是数组时是否应该返回数组索引?除单个真值之外的任何值都被视为假值。

ind

整数值索引向量,由 which(x) 产生。

.dim

dim(.) 整数向量

.dimnames

可选字符列表 dimnames(.) 。如果 useNames 为 true,则用于构造 arrayInd() 的暗名称(因此 which(*, arr.ind=TRUE) )。如果 names(.dimnames) 不为空,则这些将用作列名称。 .dimnames[[1]] 用作行名称。

useNames

逻辑指示 arrayInd() 的值是否应该具有(非空)暗名。

如果arr.ind == FALSE(默认值),整数向量,或双向量,如果x是一个长向量, 和length等于sum(x),即到TRUE输入x.

本质上,典型情况下的结果是(1:length(x))[x];更一般地说,包括当 x 具有 NA 时,which(x)seq_along(x)[!is.na(x) & x] 加上 names(当 x 具有时)。

如果 arr.ind == TRUExarray (具有 dim 属性),则结果为 arrayInd(which(x), dim(x), dimnames(x)) ,即一个矩阵,其每行都是 x 的一个元素的索引;请参阅下面的示例。

注意

与大多数其他基地不同R这不强制的函数x逻辑:仅参数typeof逻辑被接受,其他则给出错误。

例子

which(LETTERS == "R")
which(ll <- c(TRUE, FALSE, TRUE, NA, FALSE, FALSE, TRUE)) #> 1 3 7
names(ll) <- letters[seq(ll)]
which(ll)
which((1:12)%%2 == 0) # which are even?
which(1:10 > 3, arr.ind = TRUE)

( m <- matrix(1:12, 3, 4) )
div.3 <- m %% 3 == 0
which(div.3)
which(div.3, arr.ind = TRUE)
rownames(m) <- paste("Case", 1:3, sep = "_")
which(m %% 5 == 0, arr.ind = TRUE)

dim(m) <- c(2, 2, 3); m
which(div.3, arr.ind = FALSE)
which(div.3, arr.ind = TRUE)

vm <- c(m)
dim(vm) <- length(vm) #-- funny thing with  length(dim(...)) == 1
which(div.3, arr.ind = TRUE)

作者

Werner Stahel and Peter Holzer (ETH Zurich) proposed the arr.ind option.

也可以看看

Logicwhich.min 表示最小值或最大值的索引,match 表示向量中元素的第一个索引,即,对于标量 amatch(a, x) 等效于 min(which(x == a)) 但效率更高。

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Which indices are TRUE?。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。