In the last chapter we introduced the idea of “strings”. They are a way of representing normal human words inside an R script. Strings start and end with double quotes (") e.g.,
"Hello from R"
is a string with three words and an exclamation mark as content. Strings can contain numbers as well:
"The Battle of Hastings was in 1066"
and they can even be empty:
It is possible in R to also use single quotes (’) to make strings, as long as the string starts and ends with the same type of quote, but it is convention to prefer double quotes.
hello.Rto have a different string inside it. Make sure you save the file and rerun it in the terminal.
The other most common type of data that you’ll find in R scripts are numbers. There are two main types of number in R:
When creating numbers in R, you do not use quotes, you write the number directly. So:
is a float, and
is an integer.
Of course, it not much use to have numbers and strings floating about with no connection to each other. We want to be able to give them names and combine them together. We assign names to data using
<- (less than, followed by a hyphen). For example if we want to make some data and give it a name we can do it like:
pi <- 3.14159
This has created a number
3.14159 and given it a name,
pi. We can now use this name in other parts of the program to refer to that piece of data:
Names in R can contain upper and lower case letters, numbers and underscores (but can’t start with a number). Chosing the correct name for a particular variable is an important task as a non-descriptive name (or worse, an incorrect name) will be very confusing for you and anyone reading your code. It is common in R to name your variables with all lower case letters and use underscores to separate words.
So, for a variable which contains a number representing a distance in miles, avoid shortened names like dm, distm or d and instead use a name like distance_in_miles. Remember, code will be written once but read many times so make it easy to read.
Note that R uses
<- to mean “assign a value to a variable”. This is different to many other programming languages, which use
= for this meaning. R does support the use of
pi = 3.14159
but its use is discouraged.
hello.Rto split it over two lines. The first line should create a string and give it a variable name and the second line should use that name to print. Make sure you save the file and rerun it in the terminal.
Variables are more that just a way of labelling data, they also make it easier to do things with your data. If you have some numbers you can add, subtract, multiply and divide them as you would expect. The symbol for multiplication is
* and the symbol for division is
distance_in_miles <- 30 distance_in_km <- distance_in_miles * 1.60934 print(distance_in_km)
Here we created a variable
distance_in_miles with the value of
30. Then we used that variable in line two and multiplied it by a number (
distance_in_miles * 1.60934) and assigned the result of that calculation to a new variable called
distance_in_km. Finally, we printed out the new variable.
Likewise we can do addition:
temperature_in_celcius <- 25.1 temperature_in_kelvin <- temperature_in_celcius + 273.15 print(temperature_in_kelvin)
We cannot use mathematical operations on strings. They can only be used on numbers (numeric data). To join strings, we use the
greeting <- "Hello" name <- "R" message <- paste(greeting, name) print(message)
hello.Rso that the string is made by adding together two strings. Make sure you save the file and rerun it in the terminal.
So far we’ve been giving the
paste function to join many things into a single string. Arguments to functions in R are separated by commas. The
paste function is designed so that it will join together each of the arguments it was provided with, one after another on the same line, separated by spaces.
hello.Rso that the two parts of the phrase are pasted and then passed to print as separate arguments rather than pasting them together into a variable and printing the combined message. Make sure you save the file and rerun it in the terminal.