R has wide options for holding data, such as scalars, vectors, matrices, arrays, data frames, and lists. Let’s look at each structure in this post.
Scalars
Scalars are one-element vectors. These are used to hold constants.
Example
a <- 1 b < "Phone" c <- TRUE
Vectors
Vectors are one-dimensional arrays that hold numbers, characters, or logical data. The combine function c()
is used to form a vector. Vectors can hold only one data type you can mix numbers with characters. Let’s look at some example
Numeric vector
a <- c(2,10,-5,15)
Character vector
b <- c("Male", "Female", "Neutral")
Logical vector
c <- c(TRUE, FALSE, FALSE, TRUE)
To refer an elements of a vector you can use square brackets. For example,
a<-c(2,4,6,8,10,12,14,16,18,20) > a[6] [1] 12 > a[3:6] [1] 6 8 10 12 > a[c(1,7)] [1] 2 14
Matrices
A matrix is a two-dimensional array where each element has the same data type. Matrices are created with the matrix
function. The syntax for matric function is
a <- matrix(vector, nrow=number_of_rows, ncol=number_of_columns, byrow=logical_value, dimnames=list( char_vector_rownames, char_vector_colnames))
where vector
contains the elements for the matrix, nrow
and ncol
specify the row and column dimensions, and dimnames
contains optional row and column labels stored in character vectors. The option byrow
indicates whether the matrix should be filled in by row ( byrow=TRUE
) or by column ( byrow=FALSE
). The default is by column. The following listing demonstrates the matrix function.
Let’s see some examples for matrices now
Creating a 5×2 matrix
> a<-matrix(1:10, nrow=5,ncol=2) > a [,1] [,2] [1,] 1 6 [2,] 2 7 [3,] 3 8 [4,] 4 9 [5,] 5 10
Let’s create a 2x2
matrix with row and column label
> cells <- c(2,8,12,16) > r <- c("A1","A2") > c <- c("X1","X2") > b<-matrix(cells,nrow = 2, ncol = 2, byrow = TRUE,dimnames = list(r,c)) > b X1 X2 A1 2 8 A2 12 16
In the above example, a matrix was created byrow = TRUE
, try the same argument with FALSE
and see the difference.
Subscripts in matrix
You can also subscript matrix using square brackets
> x<-matrix(11:20, nrow=2) > x [,1] [,2] [,3] [,4] [,5] [1,] 11 13 15 17 19 [2,] 12 14 16 18 20 > m <-x[,3] > m [1] 15 16 > n <-x[1,4] > n [1] 17 > o <-x[2,c(3,4,5)] > o [1] 16 18 20
First, we created a 2x5
matrix, then we subscript the matrix with square brackets mentioning the column number and row number.
Arrays
Arrays are similar to matrices, the difference is this can have more than two dimensions. If we create an array of dimension (2, 3, 4) then it creates 4 rectangular matrices each with 2 rows and 3 columns. Arrays can store only data type. This can be created with array
function. The syntax for the function is
array<-array(vector, dimentions, dimnames)
Here vector
contains the data for the array, dimensions
is the numeric vector giving maximal index for each dimension and dimnames
is an optional list of dimension labels. This is useful in programming new statistical methods.
Let’s see this with the following examples,
> column <- c("COL1","COL2","COL3") > row <- c("ROW1","ROW2","ROW3") > matrix <- c("Matrix1","Matrix2") > a <- array(1:24,c(3,3,2),dimnames = list(column,row,matrix)) > a , , Matrix1 ROW1 ROW2 ROW3 COL1 1 4 7 COL2 2 5 8 COL3 3 6 9 , , Matrix2 ROW1 ROW2 ROW3 COL1 10 13 16 COL2 11 14 17 COL3 12 15 18
Keep reading about data structures. Data structures in R – Part 2