Vektor 1 bis 10
|
---|
VEK
10
VEK
1 2 3 4 5 6 7 8 9 10
|
>vek <- 1:10
>vek
[1] 1 2 3 4 5 6 7 8 9 10
|
Abmessung von Vektoren
|
VEK
10
|
>length(vek)
[1] 10
|
Vektor 4 bis 10
|
KURZ
3 10
KURZ
4 5 6 7 8 9 10
|
>kurz <- 4:10
>kurz
[1] 4 5 6 7 8 9 10
|
Negative Zahlen. Verbinden der Vektoren durch Komma
|
Im APL steht das Vorzeichenminus oben
das mittlere Minus ist eine eine Funktion
NEGA KURZ,-KURZ
NEGA
4 5 6 7 8 9 10
4
5
6
7
8
9
10
|
Im S-Plus oder R es gibt nur ein mittleres Minus
c(): die Funktion combine
>nega <- c(kurz,-kurz)
>nega
[1] 4 5 6 7 8 9 10 -4 -5 -6 -7 -8 -9 -10
|
Addieren |
PLUS KURZ+KURZ
PLUS
8 10 12 14 16 18 20
|
>plus <- kurz+kurz
>plus
[1] 8 10 12 14 16 18 20
|
Dividieren |
DIVI KURZ KURZ
DIVI
1 1 1 1 1 1 1
|
>divi <- kurz/kurz
>divi
[1] 1 1 1 1 1 1 1
|
Datentypen, Eigenschaften von Vektoren und Arrays |
Datentyp Vektor?
 VEK
1
|
>is.vector(vek)
[1] T (T heißt True)
|
Datentyp numerisch? (APL-Idiom)
0 = 0 VEK
1
|
>mode(vek)
[1] "numeric"
|
DISPLAY VEK
|
>is.character(vek)
[1] F
|
Skalar-Erweiterung |
EXTENS 1+VEK
EXTENS
2 3 4 5 6 7 8 9 10 11
|
>extens <- 1+vek
>extens
[1] 2 3 4 5 6 7 8 9 10 11
|
Folgen. Folge von 1 bis -1 |
APL ist rechtsassoziativ. Spiegeln mit
2+
3
|
S-Plus oder R ist linksassoziativ.
>1:-1
[1] 1
|
Gerade Zahlen von 2 bis 10 |
2 5
2 4 6 8 10
|
>seq(2,by=2,along=1:5) oder
>2*1:5
[1] 2 4 6 8 10
|
Ungerade Zahlen von 1 bis 9 |
1+2
5
1 3 5 7 9
Es gibt keine arithmetische Hierarchie.
|
>seq(1,by=2,along=1:5) oder
>-1+2*1:5
[1] 2 4 6 8 10
Punktrechnung geht vor Strichrechnung.
|
Folge von 1.2 bis 4 |
.2+ 3
1.2 2.2 3.2
|
>1.2:4
[1]1.2 2.2 3.2
|
Auswählen mit Index |
SEL VEK[10 10 3 1]
SEL
10 10 3 1
|
>sel<-vek[c(10,10,3,1)]
>sel
[1] 10 10 3 1
|
Without (~) im APL | Negativer Index im S-Plus oder R |
VEK[( VEK)~4]
1 2 3 5 6 7 8 9 10
|
>vek[-4]
[1] 1 2 3 5 6 7 8
|
Auswählen mit logischer Abfrage |
(VEK 5)/VEK
1 2 3 4 5
|
(<= heißt kleiner gleich)
>vek[vek<=5]
[1] 1 2 3 4 5
|
Logische Abfrage und selektive Zuweisung mit missing value |
((VEK 1)/VEK) ''
DISPLAY VEK
|
Im S-Plus oder R heißt NA fehlender Wert.
>vek[vek<=1] <- NA
>vek
[1] NA 2 3 4 5 6 7 8 9 10
|
Wiederholung von Objekten, Datentyp character |
DISPLAY 3/ 'Heute'
|
>rep("Heute",3)
[1]"Heute" "Heute" "Heute"
|
Wiederholung von Objekten, Datentyp logical |
Strukturierte Wiederholung.
bool 2 1 1 0
DISPLAY bool
|
>bool<-rep(c(T,T,F),2)
[1] T T F T T F
|
Im APL Struktur auflösen mit Enlist ( )
DISPLAY 2/ 1 1 0
|
Datentyp logical |
Im APL gibt es nur 1 oder 0 als logische Werte.
Prüfen mit APL-Idiom:
^/ ( bool)
0 1
1
|
Logische Werte im S-Plus oder R:
T heißt True oder 1
F heißt False oder 0
>is.logical(bool)
[1] T
|
Strings |
TEXTVEK 'Dies ist ein Textvektor'
TEXTVEK
23
DISPLAY TEXTVEK
|
>textvek <- "This is a string"
>length(textvek)
[1] 1
>mode(textvek)
[1] "character"
|
Nested arrays im APL2 | Vektoren im S-Plus oder R |
TRENNVEK 'Jedes' 'Wort' 'fuer' 'sich'
TRENNVEK
4
DISPLAY TRENNVEK
|
>trennvek <- c("This","is","a","string")
>length(trennvek)
[1] 4
>mode(trennvek)
[1] "character"
|
Gemischte Strukturen im APL2 | Listen im S-Plus oder R |
LISTVEK ( 3)
'Mitte' 'Ende'
LISTVEK
3
DISPLAY LISTVEK
|
>listvek <- list(c(1:3),"Mitte","Ende")
>length(listvek)
[1] 3
>mode(listvek)
[1] "list"
>mode(listvek[[1]])
[1] "numeric"
|
Auswählen aus Listen |
DISPLAY LISTVEK[1 3]

Summe von subarrays. APL mit Each ( )
+/ LISTVEK[1]
6
|
>listvek[c(3,1)]
[[3]]:
[1] "Ende"
[[1]]:
[1] 1 2 3
>sum(listvek[[1]]
[1] 6
|