[R] which

Které indexy jsou TRUE?

which {base} Dokumentace R v češtině

Popis

Vrací pravdivé TRUE indexy logického objektu, včetně indexů polí.

Použití

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

Argumenty

x vektor nebo pole typu logical. Hodnoty NA jsou povolené a vynechané (funkce pro ně vrací hodnotu jako pro FALSE).
arr.ind logická hodnota; mají být indexy vráceny ve formě pole, pokud je x pole?
ind celočíselný indexový vektor, ve formě výsledku z which(x), který udává pozice indexů v poli.
.dim celočíselný vektor dimenzí pole ve formě výsledku funkce dim(.).
.dimnames volitelný seznam (list) ve formě výsledku funkce dimnames(.). Pokud je useNames rovno TRUE, je tento seznam využit pro konstrukci dimnames v rámci funkce arrayInd() (a tedy which(*, arr.ind=TRUE)). Pokud není names(.dimnames) prázdné, jsou tyto názvy použity jako názvy sloupců. .dimnames[[1]] jsou užity jako názvy řádků.
useNames logická hodnota určující, zda má hodnota arrayInd() vůbec mít (neprázdná) dimnames.

Hodnota

Pokud arr.ind == FALSE (základní nastavení), celočíselný vektor s length rovnou sum(x), tj. počtu hodnot TRUE v x; jednoduše řečeno, výsledek je (1:length(x))[x].

Pokud arr.ind == TRUE a x je pole (array) (tj. má atribut dim), je výsledek arrayInd(which(x), dim(x), dimnames(x)), tj. matice, jejíž každý řádek je tvořen indexy jednoho prvku z x; viz příklady níže.

Poznámka

Na rozdíl od většiny ostatních základních funkcí v R si tato funkce nevynutí převedení x na typ logical: akceptovány jsou pouze argumenty s typeof rovným logical a ostatní vrací error.

Autoři

Werner Stahel a Peter Holzer (ETH Zurich) navrhli variantu arr.ind.

Viz také

Logic, which.min pro index minima či maxima and match pro první index prvku ve vektoru (tj. pro skalár a je match(a,x) ekvivalentní s min(which(x == a)) avšak výrazně efektivnější.

Příklady

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) # ktere jsou sude?
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) #-- vtipna vec s length(dim(...)) == 1
which(div.3, arr.ind = TRUE)

 
Článek ze dne 27. 10. 2016 byl naposledy upraven dne 27. 10. 2016 a zobrazen celkem 12304×, naposledy dne 19. 4. 2024 v 13:03.
 
 

Komentáře:

Jméno autora:
Email (nebude zveřejněn):
Komentář:
Sem napiš slovo Adamov:




Stránka:
 
Citace: Kalina, J., Horáková, D., Kuchař, J., Správným směrem [online]. Jiří Kalina, 2014 [cit. 2024-04-20]
Dostupné z: http://spravnym.smerem.cz/Tema/%5bR%5d%20which.
 
Desktopová verze | Mobilní verze