Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Guest post by Slaviana Pavlovich Microsoft Student Partner
My name is Slaviana Pavlovich. I am an IT and Management student at University College London with a passion for data science. I recently completed the Microsoft Professional Program for Data Science, where I developed core skills to work with data. If you are also interested in this career, but not sure where to start - I strongly encourage you to check it out. I also have a wide range of interests including 3D bioprinting, public speaking, and politics. Additionally, I enjoy swimming and photography to balance out my studies. I became a Microsoft Student Partner at the end of my first year and I absolutely enjoy being part of such a vibrant community. If you have any questions, feel free to ask!
Introduction
In today’s article, I am going to continue talking about R. In the second part of this two-part introduction to R (the first part is available here), we are going to consider:
• Matrices
• Data Frames
• Functions
• Conditionals
• Loops
Matrices
Matrix is another data type that we are going to look at. Matrix is a two-dimensional data set. A matrix is created using the function matrix() :
> # creating a matrix
> example <- matrix(c(99,45,4,47,2,5), nrow = 3, ncol = 2, byrow = TRUE)
> example
[,1] [,2]
[1,] 99 45
[2,] 4 47
[3,] 2 5
As you can see in the example above, nrow and ncol are used to define the values for rows and columns. Also, byrow = TRUE means that the matrix is filled by rows, while byrow=FALSE – by columns. Let’s look at the following example:
> # creating a 2x3 matrix that contains the numbers from 1 to 6 and filled by columns
> example.2 <- matrix(1:6, nrow = 2, ncol = 3, byrow = FALSE)
> example.2
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
To change the names of rows and columns of the matrix use dimnames:
> # creating a matrix
> A <- matrix(1:6, nrow = 3, byrow = TRUE)
> # setting row and column names
> A
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
> dimnames(A) = list(c("1row", "2row", "3row"), c("1col", "2col"))
> A
1col 2col
1row 1 2
2row 3 4
3row 5 6
There are certain operations you can do with matrices. You can transpose a matrix, using a function t() :
> M <- matrix(c(14,2,4,3,2,5), nrow = 2, ncol = 3, byrow = TRUE)
> M
[,1] [,2] [,3]
[1,] 14 2 4
[2,] 3 2 5
> t(M)
[,1] [,2]
[1,] 14 3
[2,] 2 2
[3,] 4 5
Furthermore, use solve() function to find an inverse of a square matrix:
> X <- matrix(1:4, nrow = 2, byrow = TRUE)
> X
[,1] [,2]
[1,] 1 2
[2,] 3 4
> solve(X)
[,1] [,2]
[1,] -2.0 1.0
[2,] 1.5 -0.5
Arithmetic operations are done element-wise:
> A <- matrix(1:6, nrow = 3, byrow = TRUE)
> B <- matrix(1:6, nrow = 2, byrow = TRUE)
> A
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
> B
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
> A + 2
[,1] [,2]
[1,] 3 4
[2,] 5 6
[3,] 7 8
> B / 2
[,1] [,2] [,3]
[1,] 0.5 1.0 1.5
[2,] 2.0 2.5 3.0
For matrix multiplication use “%*%”:
> A %*% B
[,1] [,2] [,3]
[1,] 9 12 15
[2,] 19 26 33
[3,] 29 40 51
In R, to select elements of the matrix, do the following:
> K <- matrix(4:7, nrow = 2, byrow = TRUE)
> K
[,1] [,2]
[1,] 4 5
[2,] 6 7
> K[1,2] # element at 1st row and 2rd column
[1] 5
> K[1,] # first row
[1] 4 5
> K[,2] # second column
[1] 5 7
Finally, we can always modify a matrix:
> V <- matrix(1:9, ncol = 3)
> V
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
> V[1,3] <- 0; V # modify a single element at 1st row and 3rd column to 0
[,1] [,2] [,3]
[1,] 1 4 0
[2,] 2 5 8
[3,] 3 6 9
> V[V>2] <- 1; V # change all elements greater than 2 to 1
[,1] [,2] [,3]
[1,] 1 1 0
[2,] 2 1 1
[3,] 1 1 1
Data Frames
After looking at matrices, I suggest learning about data frames. A data frame is a special case of a list (another data object in R that was previously considered in the first part of the article). Data frames are used for storing tables. Unlike matrices, each column, also known as a vector, can store different types of data (logical, numeric, character, complex, etc.). The function data.frame() is used to create a data frame:
> # creating a data frame
> table <- data.frame(name=c("Jack", "Karan", "Thomas", "Vito", "Kristine"),
+ age=c(19, 20, 19, 19, 19),
+ sex=c("M", "M", "M", "M", "F"),
+ colour=c("yellow", "red", "green", "blue", "pink"))
> table
name age sex colour
1 Jack 19 M yellow
2 Karan 20 M red
3 Thomas 19 M green
4 Vito 19 M blue
5 Kristine 19 F pink
> typeof(table)
[1] "list"
> class(table)
[1] "data.frame"
> # function of a data frame
> names(table)
[1] "name" "age" "sex" "colour"
> nrow(table)
[1] 5
> ncol(table)
[1] 4
There are several ways of accessing an element of a data frame:
> table[2:4] # columns starting from 2nd to 4th of data frame
age sex colour
1 19 M yellow
2 20 M red
3 19 M green
4 19 M blue
5 19 F pink
> table[c("colour","age")] # columns with the titles colour and age from data frame
colour age
1 yellow 19
2 red 20
3 green 19
4 blue 19
5 pink 19
In a similar way to matrices, it is possible to change the values of the elements:
> table[3,"age"] <- 20; table # modify the element at 3st row and column age to 20
name age sex colour
1 Jack 19 M yellow
2 Karan 20 M red
3 Thomas 20 M green
4 Vito 19 M blue
5 Kristine 19 F pink
Functions
There is a straightforward way of creating own functions in R. Let’s consider an example where our function is going to find the difference between two integers:
> example <- function (a, b) {
+ c <- a - b
+ c
+ }
> example(15, 1)
[1] 14
As shown above, the word function is used to declare a function in R. Now we are going to create a function that prints a type and class of an argument:
example<-function(X){
+ print(typeof(X))
+ print(class(X))
> example <- function (a, b) {
+ c <- a - b
+ c
+ }
> example(15, 1)
[1] 14
+ print(paste("The type is", typeof(X) , "and class is", class(X)))
+ }
> Y<-c("Vito")
> example(Y)
[1] "character"
[1] "character"
[1] "The type is character and class is character"
> Z<-c(11)
> example(Z)
[1] "double"
[1] "numeric"
[1] "The type is double and class is numeric"
If you want to take an input from the user, use the function readline() in R:
read.example <- function()
+ {
+ str <- readline(prompt="Your name: ")
+ return(as.character(str))
+ }
> print(paste("Nice to meet you,", read.example(), "!"))
Your name: Dre
[1] "Nice to meet you, Dre !"
Conditionals
To use conditional execution in R, we are going to use if…else statement:
> x <- 4
> if (x < 0) {
+ print("It is a negative number!")
+ } else if (x > 0) {
+ print("It is a positive number!")
+ } else
+ print("Zero!")
[1] "It is a positive number!"
> x <- -10
> if (x < 0) {
+ print("It is a negative number!")
+ } else if (x > 0) {
+ print("It is a positive number!")
+ } else
+ print("Zero!")
[1] "It is a negative number!"
> x <- 0
> if (x < 0) {
+ print("It is a negative number!")
+ } else if (x > 0) {
+ print("It is a positive number!")
+ } else
+ print("Zero!")
[1] "Zero!
Loops
Now we are going to consider the control statements in R, such as for{}, repeat{} and while{}.
· A for{} loop in the example below is going to print the first three numbers in the vector Y:
> Y <- c(17, 25, 19, 33, 11, 51, 55)
> for(i in 1:3) {
+ print(Y[i])
+ }
[1] 17
[1] 25
[1] 19
· In this example, a repeat{} loop is going to print “task” and after 3 loops it is going to break:
> task <- c("R is great!")
> i <- 3
> repeat {
+ i <- i + 1
+ print(task)
+ if(i > 5) {
+ break
+ }
+ }
[1] "R is great!"
[1] "R is great!"
[1] "R is great!"
· A while{} loop is going to follow the commands as long as the condition is true:
> i <- 1
> while(i < 5) {
+ print(i)
+ i <- i + 1
+ }
[1] 1
[1] 2
[1] 3
[1] 4
Resources
There are so many interesting resources online that can help you further with R. I strongly recommend checking them out. In the following article, I am going to cover data visualisation, stay updated!
https://academy.microsoft.com/en-us/professional-program/ Microsoft professional programmes, Big Data, Data Science
https://imagine.microsoft.com/en-us/Catalog R Server Download for Students & Academics via Imagine Access
/en-us/r-server/ R Server and R Documentation
https://www.microsoft.com/en-gb/cloud-platform/r-server Microsoft R Server
Comments
- Anonymous
July 25, 2017
Was hoping for a continuation. Thanks!- Anonymous
July 26, 2017
Thank you so much, Alex! Your support means a lot to me.
- Anonymous
- Anonymous
August 08, 2017
This is really terrific and you make a huge contribution wherever you do go!!