當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。