Sök…


Introduktion

Logiskt är ett läge (och en implicit klass) för vektorer.

Anmärkningar

Stenografi

TRUE , FALSE och NA är de enda värdena för logiska vektorer; och alla tre är reserverade ord. T och F kan vara kortfattat för TRUE och FALSE i en ren R-session, men varken T eller F är reserverade, så tilldelning av icke-standardvärden till dessa namn kan ställa in användare för svårigheter.

Logiska operatörer

Det finns två typer av logiska operatörer: de som accepterar och returnerar vektorer av vilken längd som helst (elementvis operatör: ! , | , & , xor() ) och de som bara utvärderar det första elementet i varje argument ( && , || ). Den andra sorteringen används främst som cond argumentet till if funktionen.

Logisk operatör Menande Syntax
! Inte ! x
& elementmässigt (vektoriserat) och x & y
&& och (endast enstaka element) x && y
| elementmässigt (vektoriserat) eller x | y
|| eller (endast enstaka element) x || y
xor elementmässigt (vektoriserat) exklusivt ELLER xor (x, y)

Observera att || operatören utvärderar vänstertillståndet och om vänstertillståndet är SANT utvärderas aldrig högersidan. Detta kan spara tid om det första är resultatet av en komplex operation. && Operatören kommer också att returnera FALSE utan utvärdering av det andra argumentet när det första elementet i det första argumentet är FALSE.

> x <- 5
> x > 6 || stop("X is too small")
Error: X is too small
> x > 3 || stop("X is too small")
[1] TRUE

För att kontrollera om ett värde är logiskt kan du använda is.logical() .

Tvång

För att tvinga en variabel till en logisk använd as.logical() .

> x <- 2
> z <- x > 4
> z
[1] FALSE
> class(x)
[1] "numeric"
> as.logical(2)
[1] TRUE

När du applicerar as.numeric() på en logisk, kommer en dubbel att returneras. NA är ett logiskt värde och en logisk operatör med en NA kommer att returnera NA om resultatet är tvetydigt.

Tolkning av NA: er

Se Saknade värden för detaljer.

> TRUE & NA
[1] NA
> FALSE & NA
[1] FALSE
> TRUE || NA
[1] TRUE
> FALSE || NA
[1] NA


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow