<- "Maize" food_name
2 Data Types
The principal data types in R are numeric
, character
, factor
and logical
. There are others, but these are the main ones.
- A datum of type
numeric
is a numerical value, such as food quantity value. - A datum of type
character
is a string of characters, such as the name of food. - A datum of type
factor
is the label for a food type or categories which we might use in hces analysis.
- A datum of type
logical
takes valuesTRUE
orFALSE
2.1 Assignment
We can store any of these datatypes in an object
by assigning the value to that object. For example, we can assign the value Maize
to the object food_name
as follows:
The <-
is the assignment operator. It assigns the value on the right to the object on the left. We can then use the object food_name
in other commands, for example, to print the value of food_name
we can use the print()
function:
print(food_name)
There are other assignment operators, such as =
and ->
, but <-
is the most common. We can also assign the value of an object to another object, for example:
<- food_name food_name2
In this case, the value of food_name
is assigned to food_name2
. We can then print the value of food_name2
:
print(food_name2)
In this book we will use the <-
and the =
assignment operator. We use the <-
when we want to assign a value to an object, and the =
when we want to assign a value to an argument in a function. This is a convention that is used by many R programmers. More on functions later.
2.2 Character data
The simplest data type in R is the character. A character is a string of characters, for example, the “Maize” name that we assigned above. The “” indicate that we want to store the string of characters between the “” in the object. If we don’t use the “” then R will look for an object with that name, and if it doesn’t find it, it will throw an error. For example, if we type:
<- Maize food_name
We can fix this by putting the “” around the string of characters:
<- "Maize" food_name
We ca perform operations on character data, such as concatenation, which is the joining of two or more strings of characters. We can do this using the paste()
function. For example, we can create a new character object called food_name3
by concatenating the values of food_name
and food_name2
as follows:
# Create character vector with value "Maize"
<- "Maize"
food_name # Create character vector with value "Meal"
<- "Meal"
food_name2 # Concatenate the values of food_name and food_name2 and assign the result to a new character object called food_name3
<- paste(food_name, food_name2)
food_name3 # Print the value of food_name3
print(food_name3)
2.3 Numeric data
A numeric is a numerical value, such as the food quantity value. We can assign a numeric value to an object as follows:
<- 0.5 food_quantity
Note that we don’t need to put the “” around the numeric value. If we do, then R will treat it as a character, and not a numeric. For example, if we type:
<- "0.5" food_quantity
We can then do simple mathematical manipulations with a numeric value. For example, we can add 0.5 to the value of food_quantity
as follows:
<- 0.5
food_quantity # Add 0.5 to the value of food_quantity
<- food_quantity + 0.5 food_quantity
2.3.1 Operations on numeric data
We can perform operations on numeric data, such as addition, subtraction, multiplication and division. For example, we can create a new numeric object called food_quantity
by adding the values of food_quantity_g
and food_quantity_mg
as follows:
# Create a numeric object called food_quantity_g and assign it the value 15
<- 15
food_quantity_g
# Create a numeric object called food_quantity_mg and
# calculate the value of food_quantity_g in milligrams
<- food_quantity_g * 1000 food_quantity_mg
Just like in maths the operators in R follow operator precedence.However we can use brackets to specify the order of operations.
2.4 Logical data
Logical data takes the values TRUE
or FALSE
. We can assign a logical value to an object as follows:
<- TRUE is_staple
Logical values can be returned from operation e.g. testing for equality. For example, we can test whether the vales in two objects is the same as follow:
# Create character vectors
<- "Maize"
food_name <- "Maize"
food_name2 <- "Rice"
food_name3
# Test equality
== food_name2
food_name == food_name3 food_name
Notice how when testing for equality we use ==
? This is because the =
is an assignment operator and not a logical operator. We can also use the !=
operator to test for inequality. For example, we can test whether the values in two objects are not the same as follows:
!= food_name2
food_name != food_name3 food_name
Other logical operators are >
, <
, >=
and <=
. Logical object can be the subject of logical functions, notably "if
.. then"
. Consider the example below:
# Create numeric object
<- 18
age # Test whether age is greater than 18
if(age > 18) {
print("You are an adult")
else{
}print("You are not an adult")
}
Testing the same example with a different value of age:
# Create numeric object
<- 17
age # Test whether age is greater than 18
if(age > 18) {
print("You are an adult")
else{
}print("You are not an adult")
}
Logical operations can be chained together using the &
operator for "and"
and the |
operator for "or"
. For example, we can test whether the values in two objects are the same and whether the value of food_quantity_g
is greater than 10 as follows:
== food_name2 & food_quantity_g > 10 food_name
2.5 Summary
Until now we have been storing only one value in an object. We can store multiple values in an object using a vector. We will look at vectors and data structures in the next section.