R Language
Rechenzeichen
Suche…
Bemerkungen
Fast alle Operatoren in R sind wirklich Funktionen. Zum Beispiel ist +
eine als Funktion definierte function (e1, e2) .Primitive("+")
wobei e1 die linke Seite des Operators und e2 die rechte Seite des Operators ist. Dies bedeutet, dass es möglich ist, eher nicht eingreifende Effekte zu erzielen, indem das +
in der Basis mit einer benutzerdefinierten Funktion maskiert wird.
Zum Beispiel:
`+` <- function(e1, e2) {e1-e2}
> 3+10
[1] -7
Reichweite und Zusatz
Nehmen wir ein Beispiel für das Hinzufügen eines Werts zu einem Bereich (wie es zum Beispiel in einer Schleife möglich wäre):
3+1:5
Gibt:
[1] 4 5 6 7 8
Dies liegt daran, dass der Bereichsoperator :
eine höhere Priorität hat als der Additionsoperator +
.
Was passiert während der Auswertung ist wie folgt:
-
3+1:5
-
3+c(1, 2, 3, 4, 5)
Erweiterung des Bereichsoperators, um einen Vektor aus ganzen Zahlen zu erzeugen. -
c(4, 5, 6, 7, 8)
Zugabe von 3 zu jedem Element des Vektors.
Um dieses Verhalten zu vermeiden, müssen Sie dem R-Interpreter mitteilen, wie er die Operationen mit ( )
so anordnen soll:
(3+1):5
Jetzt berechnet R, was sich in den Klammern befindet, bevor der Bereich erweitert wird, und gibt Folgendes aus:
[1] 4 5
Addition und Subtraktion
Die grundlegenden mathematischen Operationen werden hauptsächlich auf Zahlen oder auf Vektoren (Listen von Zahlen) ausgeführt.
1. Verwenden Sie einzelne Zahlen
Wir können einfach die mit +
verknüpften Zahlen eingeben, um sie hinzuzufügen und -
um sie abzuziehen :
> 3 + 4.5
# [1] 7.5
> 3 + 4.5 + 2
# [1] 9.5
> 3 + 4.5 + 2 - 3.8
# [1] 5.7
> 3 + NA
#[1] NA
> NA + NA
#[1] NA
> NA - NA
#[1] NA
> NaN - NA
#[1] NaN
> NaN + NA
#[1] NaN
Wir können die Zahlen Variablen (in diesem Fall Konstanten) zuweisen und dieselben Operationen ausführen:
> a <- 3; B <- 4.5; cc <- 2; Dd <- 3.8 ;na<-NA;nan<-NaN
> a + B
# [1] 7.5
> a + B + cc
# [1] 9.5
> a + B + cc - Dd
# [1] 5.7
> B-nan
#[1] NaN
> a+na-na
#[1] NA
> a + na
#[1] NA
> B-nan
#[1] NaN
> a+na-na
#[1] NA
2. Verwendung von Vektoren
In diesem Fall erstellen wir Vektoren von Zahlen und führen die Operationen unter Verwendung dieser Vektoren oder Kombinationen mit einzelnen Zahlen aus. In diesem Fall wird die Operation unter Berücksichtigung jedes Elements des Vektors ausgeführt:
> A <- c(3, 4.5, 2, -3.8);
> A
# [1] 3.0 4.5 2.0 -3.8
> A + 2 # Adding a number
# [1] 5.0 6.5 4.0 -1.8
> 8 - A # number less vector
# [1] 5.0 3.5 6.0 11.8
> n <- length(A) #number of elements of vector A
> n
# [1] 4
> A[-n] + A[n] # Add the last element to the same vector without the last element
# [1] -0.8 0.7 -1.8
> A[1:2] + 3 # vector with the first two elements plus a number
# [1] 6.0 7.5
> A[1:2] - A[3:4] # vector with the first two elements less the vector with elements 3 and 4
# [1] 1.0 8.3
Wir können auch die Funktion sum
, um alle Elemente eines Vektors hinzuzufügen:
> sum(A)
# [1] 5.7
> sum(-A)
# [1] -5.7
> sum(A[-n]) + A[n]
# [1] 5.7
Wir müssen beim Recycling aufpassen, was eine der Eigenschaften von R
ist. Dieses Verhalten tritt bei mathematischen Operationen auf, bei denen die Länge der Vektoren unterschiedlich ist. Kürzere Vektoren im Ausdruck werden so oft wie nötig rezykliert (möglicherweise unvollständig), bis sie der Länge des längsten Vektors entsprechen. Insbesondere wird eine Konstante einfach wiederholt . In diesem Fall wird eine Warnung angezeigt.
> B <- c(3, 5, -3, 2.7, 1.8)
> B
# [1] 3.0 5.0 -3.0 2.7 1.8
> A
# [1] 3.0 4.5 2.0 -3.8
> A + B # the first element of A is repeated
# [1] 6.0 9.5 -1.0 -1.1 4.8
Warning message:
In A + B : longer object length is not a multiple of shorter object length
> B - A # the first element of A is repeated
# [1] 0.0 0.5 -5.0 6.5 -1.2
Warning message:
In B - A : longer object length is not a multiple of shorter object length
In diesem Fall müssen Sie nur die Elemente des kürzeren Vektors berücksichtigen:
> B[1:n] + A
# [1] 6.0 9.5 -1.0 -1.1
> B[1:n] - A
# [1] 0.0 0.5 -5.0 6.5
Bei Verwendung der sum
werden wieder alle Elemente innerhalb der Funktion hinzugefügt.
> sum(A, B)
# [1] 15.2
> sum(A, -B)
# [1] -3.8
> sum(A)+sum(B)
# [1] 15.2
> sum(A)-sum(B)
# [1] -3.8