2.4 Logiske variabler og vektorer
R kan tjekke bestemte udsagn om tal, såsom “fem er mindre end tre”. Hvis man skriver udsagnet, får man sandhedsværdien tilbage, som er enten TRUE
eller FALSE
:
## [1] FALSE
Følgende relationer til sammenligning af to tal findes i R:
Relation | Betydning |
---|---|
< |
\(<\) skarp mindre end |
<= |
\(\leq\) mindre end eller lig med |
> |
\(>\) skarp større end |
>= |
\(\geq\) større end eller lig med |
== |
\(=\) lig med |
!= |
\(\neq\) forskellig fra |
Man kan sammenligne to tal, eller også en vektor og en tal eller to vektorer.
## [1] TRUE
## [1] FALSE TRUE FALSE TRUE
## [1] FALSE TRUE FALSE
Logiske variabler gemmer sandhedsværdier.
Logiske værdier kan kombineres ved “og” eller “eller” operatorer og negationen. Antag, vi har gemt logiske værdier i variablerx
og y
, så betyder
Operator | Betydning |
---|---|
!x |
\(\neg x\), negationen |
x & y |
\(x\wedge y\), og |
x | y |
\(x\vee y\), eller |
xor(x,y) |
enten \(x\) eller \(y\). |
For eksempel kan bestemmes, om \(1 \leq x\), \(x \leq 5\) og \(1 \leq x \leq 5\) gælder når \(x\) antager værdierne \(0, 2.3\) og \(6\) ved følgende kode:
## [1] FALSE TRUE TRUE
## [1] TRUE TRUE FALSE
## [1] FALSE TRUE FALSE
Skal resultatet gemmes, så bruges med fordel parenteser for at øge kodens læselighed. I nedenstående eksempel bruges et langt navn. Det er tilladt at bruge underscores og punktum i variablenavne, men ikke bindestreg, fordi dette ville interpreteres som “minus”.
## [1] FALSE TRUE FALSE
Internt bliver de koderet som 1 og 0, hvor 1 står for TRUE
. Man kan regne med dem som om de var tal.
## [1] TRUE FALSE TRUE
## [1] 2
Øvelse 2.8
Gem en vektor \(a = (-3, 7, -2 ,10)\) og bestem ved at beregne i R, hvor mange af af \(a\)s elementer
- er større end -2.5,
- er mindre end 9,
- ligger mellem -2.5 og 9,
- ligger uden for intervallet \([-2.5,9]\).
2.4.1 Indeksering af vektorer ved logiske udtryk eller logiske variable
I afsnit 2.3.1 så vi, hvordan man trækker flere elementer i en vektor ved at give indeksnumre. Det er faktisk muligt, at bruge en vektor af logiske værdier som indeks, hvor der angives, hvilke elementer skal beholdes.
## [1] FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE
## [1] 3.00 7.00 6.00 10.30 3.14
## [1] 3.00 7.00 6.00 10.30 3.14
Øvelse 2.9
Forklar ovenstående kode, og lav en ny vektor smaa
som indeholder alle elementer af a
der er mindre eller lig fire.