<- 2+3*4 my_new_variable
Assigning value to a variable
1 The assignment operator <-
Recall the previous simple example in which the data 14
is stored in memory under the name my_new_variable
:
Notice how the value 14
(the result of 2+3*4
) is assigned to the variable my_new_variable
using the assignment operator <-
.
This is a particular to R.
In other programming languages, it is common to use =
as the assignment operator (… being very flexible, R will actually also accept that.)
However, the =
can be somewhat ambiguous:
For instance,
y = 2x + 4
could be read as a declaration of a functional relationship between variablesx
andy
- in this case a linear relationship: for every value of x, y equals 2x+4.
Alternatively, it could be read as a test of equality: is y equal to 2x+4 ? … the result of which could only be
TRUE
orFALSE
.
Or, indeed it could be read as an assignment: reassign the value of y to be equal to 2x+4 … or even reassign the value of x, so that 2x+4 is equal to y … reading left-to-right is not a universal, you see!
In short: The preferred notation for assigning new values to a variable in R is to use the assignment operator <-
Note also:
- to actually define a functional relation, use
function()
e.g.:y <- function(x) { 2x+4 }
… more about that later - to test for equality use
==
e.g.:y == 2x+4
… which will return eitherTRUE
orFALSE
- it is permissible but not good practice to assign the other way using
->
e.g.:2x + 4 -> y
2 Tildelingsoperatoren <-
Husk det simple eksempel fra tidligere, hvor 14
blev gemt i hukommelsen under navnet min_nye_variabel
:
<- 2+3*4 min_nye_variabel
Bemærk, hvordan værdien 14
(resultatet af 2+3*4
) blev tildelt til variablen min_nye_variabel
ved hjælp af tildelingsoperatoren <-
.
Dette er noget særligt for R.
I andre programmeringssprog er det almindeligt at bruge =
som tildelignsoperatør (… da R er meget fleksibelt, vil R faktisk også acceptere et =
.)
Dog kan =
være noget tvetydigt:
For eksempel kunne
y = 2x + 4
læses som en erklæring om en funktionel sammenhæng mellem variablenex
ogy
- i dette tilfælde en lineær sammenhæng: for hver værdi af x er y lig med 2x+4.
Alternativt kan det læses som en test af lighed: er y lig med 2x+4 ? … resultat af sådan en test kan kun være ‘SAND’ eller ‘FALSK’.
Eller det kunne faktisk læses som en tildeling: tildel variablen y værdien af 2x+4 … eller endda tildel variablen x en værdi så 2x+4 er lig med y … det at læse venstre- til højre er nemlig ikke en universelt.
Kort sagt: Den foretrukne notation for at tildele nye værdier til en variabel i R er at bruge tildelingsoperatoren <-
Bemærk også:
- for at definere en funktionel relation, brug
function()
f.eks.:y <- function(x) { 2x+4 }
… mere om det senere - for at teste for lighed, brug
==
f.eks.:y == 2x+4
… hvilket vil returnere enten “TRUE” eller “FALSE” - det er tilladt, men ikke god praksis at tildele den anden vej ved hjælp af
->
, f.eks.:2x + 4 -> y