max
Maxima a minima
Extremes {base} | Dokumentace R v češtině |
Popis
Vrací (regulární nebo paralelní) maxima a minima vstupních hodnot.
pmax*()
a pmin*()
vezmou jeden nebo více vektorů jako argumenty, recyklují je na běžnou délku a vrací samostatný vektor, který udává ‘paralelní’ maxima (nebo minima) argumentových vektorů.
Použití
max(..., na.rm = FALSE)
min(..., na.rm = FALSE)
pmax(..., na.rm = FALSE)
pmin(..., na.rm = FALSE)
pmax.int(..., na.rm = FALSE)
pmin.int(..., na.rm = FALSE)
Argumenty
... |
numerické nebo znakové argumenty (viz poznámka). |
na.rm |
logická proměnná indikující, jestli chybějící hodnoty mají být odstraněny. |
Detaily
max
a min
vrací maximum nebo minimum všech hodnot v jejich argumentech, jako integer
, jestli jsou všechny logické
proměnné nebo integery
, jako double
, jestli jsou všechny numericé, a jinak jako znaky.
Jestli na.rm
je FALSE
, hodnota NA
v kterémkoliv argumentu způsobí vrácení hodnoty NA
, jinak jsou hodnoty NA
ignorované.
Minimum a maximum numerické prázdné množiny jsou +Inf
a -Inf
(v takovémto pořadí!), co zabezpečuje transitivitu, např., min(x1, min(x2)) == min(x1, x2)
. Pro numerické x
max(x) == -Inf
a min(x) == +Inf
když length(x) == 0
(po odstranění chybějících hodnot, jestli je vyžadováno). Avšak, pmax
a pmin
vrátí NA
, jestli jsou všechny paralelní elementy NA
, také pro na.rm = TRUE
.
pmax
a pmin
vezme jako argumenty jeden nebo více vektorů (nebo matic) a vrátí jeden vektor udávající ‘paralelní’ maxima (nebo minima) vektorů. První element výsledku je maximum (minimum) prvních elementů všech argumentů, druhý element výsledku je maximum (minimum) druhých elementů a tak dál. Kratší vstupy (nenulové délky) se recyklují, je-li to potřebné. Atributy (viz attributes
: jako například names
nebo dim
) se zkopírují z prvního argumentu (jestli to je možné, např., not pro objekt S4
).
pmax.int
a pmin.int
jsou rychlejší interní verze používány jenom tehdy, když všechny argumenty jsou atomické vektory a žádné třídy neexistují: zbaví se všech atributú. (Všimněte si, že všechny verze selhávají pro originální a komplexní vektory, protože tyto nemají žádné uspořádání.)
max
a min
jsou generické funkce: mehody pro ně můžou být definovány individuálně, nebo přes skupinové generikum Summary
. Aby tohle fungovalo správně, argumenty ...
by měli být nepojmenované, a a poselství by mělo být na prvním argumentu.
Podle definice min/max numerického vektoru obsahujícího NaN
je NaN
, s výjimkou, že min/max jakéhokoliv vektoru obsahujícího NA
je NA
, i když obsahuje také NaN
. Všimněte si, že max(NA, Inf) == NA
, i když by maximum bylo Inf
nezávisle na tom, čím by měla být chybějící hodnota.
Znakové verze jsou uspořádány lexikograficky, a tohle závisí na sekvenci porovnávání používaného prostředí: podrobnosti udává nápověda pro ‘Comparison&rsquo. max/min prázdného znakového vektoru je definována jako znak NA
. (Mohli by se vést spory o tom, že ""
je nejmenší znakový element, maximum by mělo být ""
, ale neexistuje žádný očividný kandidát pro minimum.)
Hodnota
Pro min
nebo max
, vektor s délkou jeden. Pro pmin
nebo pmax
, vektor s délkou nejdelšího z vstupních vektorů, nebo s nulovou délkou, jestli měl jeden ze vstupů nulovou délku.
Typ výsledku bude udaný nejvyšším vstupem podle pořadí integer < double < znak.
Pro min
a max
, jestli existují jenom numerické vstupy a všechny jsou prázdne (po možném odstranění NA
s), výsledek je double (Inf
nebo -Inf
).
S4 methody
max
a min
jsou součástí skupinového generika S4 Summary
. Metody pro ně musí obsahovat podpis x, ..., na.rm
.
Poznámka
‘Numerické’ argumenty jsou vektory typu integer a numeric, a logical (převedené na integer). Z historických důvodů je NULL
akceptována jako ekvivalent k integer(0)
.
pmax
a pmin
fungují také na objektech tříd S3 nebo S4 s vhodnými metodami pro srovnání, is.na
a rep
(jestli je potřebné recyklování argumentů).
Reference
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Viz také
range
(obojí min and max) a which.min
(which.max
) pro arg min, tzn., polohu extremních hodnot.
‘plotmath’ pro použití min
v anotaci grafu.
Příklady
require(stats); require(graphics)
min(5:1, pi) #-> one number
pmin(5:1, pi) #-> 5 numbers
x <- sort(rnorm(100)); cH <- 1.35
pmin(cH, quantile(x)) # no names
pmin(quantile(x), cH) # has names
plot(x, pmin(cH, pmax(-cH, x)), type = "b", main = "Huber's function")
cut01 <- function(x) pmax(pmin(x, 1), 0)
curve( x^2 - 1/4, -1.4, 1.5, col = 2)
curve(cut01(x^2 - 1/4), col = "blue", add = TRUE, n = 500)
## pmax(), pmin() zachovává atributy *prvního* argumentu
D <- diag(x = (3:1)/4) ; n0 <- numeric()
stopifnot(identical(D, cut01(D) ),
identical(n0, cut01(n0)),
identical(n0, cut01(NULL)),
identical(n0, pmax(3:1, n0, 2)),
identical(n0, pmax(n0, 4)))