Introduction

Verify that R and RStudio are downloaded following Lecture 1.
Open RStudio.
In the console enter separately each of the following command lines:

1+1
[1] 2
die <- 1:6
die + die
[1]  2  4  6  8 10 12

Exercise 1

  1. Choose any number and add 2 to it.
  2. Multiply the result by 3.
  3. Subtract 6 from the answer.
  4. Divide what you get by 3.
# We choose the number 101
a <- 101 + 2
b <- a * 3
c <- b - 6
d <- c / 3
print(d)
[1] 101

Exercise 2

Define the function “magic” that takes a number as an argument and repeat the steps from Exercise 1. Set “10” as the default value.

magic <- function(x){
  y <- x + 2
  z <- y*3
  w <- z - 6
  v <- w/3
  v
}

Call the function “magic” with different values passed as arguments.

magic(10)
magic(2)
magic(7)
magic(1053)

Exercise 3

Write a function named “simple_math” that takes two numbers as input and returns both their sum and their product. Include default values for both arguments.

simple_math <- function(x = 101, y = 1024) {
    sum_result <- x+y
    product_result <- x*y
    return(list(sum = sum_result, product = product_result))
}

Test your function

result <- simple_math()
print(result)
result <- simple_math(3, 4)
print(result)

Exercise 4

Let x3 be the following vector

x3 <- c(0, 1, 1, 2, 2, 2, 3, 3, 4)

Imagine what a histogram of x3 would look like. Assume that the histogram has a bin width of 1. How many bars will the histogram have? Where will they appear? How high will each be?

When you are done, plot a histogram of x3 with binwidth = 1, and see if you are right.

# You can make a histogram of x3 with qplot(x3, binwidth = 1). The histogram will look like a symmetric pyramid. The middle bar will have a height of 3 but be sure to try it and see for yourself.
# You can use a histogram to display visually how common different values of x are. Numbers covered by a tall bar are more common than numbers covered by a short bar.

Exercise 5

Step 1

The ggplot2 package is a powerful tool for creating a wide range of plots and visualizations in R. 1. Install the ggplot2 package using the following command:

install.packages("ggplot2")

Confirm that the package has been installed by checking the output in your console.

Step 2

After installing the package, load it into your R session:

library(ggplot2)

Step 3

Let’s create a scatter plot to visualize the relationship between two sets of numbers.

  1. Create two vectors of numbers:
x_values <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
y_values <- c(2, 3, 5, 7, 11, 13, 17, 19, 23, 29)
  1. Use ggplot2 to create a scatter plot directly from these vectors:
ggplot() +
  geom_point(aes(x = x_values, y = y_values)) +
  labs(title = "Scatter Plot of x vs. y",
       x = "X Values",
       y = "Y Values")

Explanations

The ggplot() function initializes the plotting environment.
geom_point(aes(x = x_values, y = y_values)) creates a scatter plot with points defined by x_values and y_values.
labs() adds labels and a title to your plot.

LS0tCnRpdGxlOiAiU1RTQ0kgMjEyMDogRGlzY3Vzc2lvbiAxIgphdXRob3I6ICJOYXllbCBCZXR0YWNoZSIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyBJbnRyb2R1Y3Rpb24KClZlcmlmeSB0aGF0IFIgYW5kIFJTdHVkaW8gYXJlIGRvd25sb2FkZWQgZm9sbG93aW5nIFtMZWN0dXJlIDFdKGh0dHBzOi8vbmF5ZWxiZXR0YWNoZS5naXRodWIuaW8vZG9jdW1lbnRzL1NUU0NJXzIxMjAvbGVjXzEucGRmICJMaW5rIHRvIExlY3R1cmUgMSIpLlwKT3BlbiBSU3R1ZGlvLlwKSW4gdGhlIGNvbnNvbGUgZW50ZXIgc2VwYXJhdGVseSBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lczoKCmBgYHtyfQoxKzEKYGBgCgpgYGB7cn0KZGllIDwtIDE6NgpgYGAKCmBgYHtyfQpkaWUgKyBkaWUKYGBgCgojIEV4ZXJjaXNlIDEKCjEuICBDaG9vc2UgYW55IG51bWJlciBhbmQgYWRkIDIgdG8gaXQuXAoyLiAgTXVsdGlwbHkgdGhlIHJlc3VsdCBieSAzLlwKMy4gIFN1YnRyYWN0IDYgZnJvbSB0aGUgYW5zd2VyLlwKNC4gIERpdmlkZSB3aGF0IHlvdSBnZXQgYnkgMy5cCgpgYGB7cn0KIyBXZSBjaG9vc2UgdGhlIG51bWJlciAxMDEKYSA8LSAxMDEgKyAyCmIgPC0gYSAqIDMKYyA8LSBiIC0gNgpkIDwtIGMgLyAzCnByaW50KGQpCmBgYAoKIyBFeGVyY2lzZSAyCgpEZWZpbmUgdGhlIGZ1bmN0aW9uICJtYWdpYyIgdGhhdCB0YWtlcyBhIG51bWJlciBhcyBhbiBhcmd1bWVudCBhbmQgcmVwZWF0IHRoZSBzdGVwcyBmcm9tIEV4ZXJjaXNlIDEuIFNldCAiMTAiIGFzIHRoZSBkZWZhdWx0IHZhbHVlLgoKYGBge3J9Cm1hZ2ljIDwtIGZ1bmN0aW9uKHgpewogIHkgPC0geCArIDIKICB6IDwtIHkqMwogIHcgPC0geiAtIDYKICB2IDwtIHcvMwogIHYKfQpgYGAKCkNhbGwgdGhlIGZ1bmN0aW9uICJtYWdpYyIgd2l0aCBkaWZmZXJlbnQgdmFsdWVzIHBhc3NlZCBhcyBhcmd1bWVudHMuCgpgYGB7cn0KbWFnaWMoMTApCm1hZ2ljKDIpCm1hZ2ljKDcpCm1hZ2ljKDEwNTMpCmBgYAoKIyBFeGVyY2lzZSAzCgpXcml0ZSBhIGZ1bmN0aW9uIG5hbWVkICJzaW1wbGVfbWF0aCIgdGhhdCB0YWtlcyB0d28gbnVtYmVycyBhcyBpbnB1dCBhbmQgcmV0dXJucyBib3RoIHRoZWlyIHN1bSBhbmQgdGhlaXIgcHJvZHVjdC4gSW5jbHVkZSBkZWZhdWx0IHZhbHVlcyBmb3IgYm90aCBhcmd1bWVudHMuCgpgYGB7cn0Kc2ltcGxlX21hdGggPC0gZnVuY3Rpb24oeCA9IDEwMSwgeSA9IDEwMjQpIHsKICAgIHN1bV9yZXN1bHQgPC0geCt5CiAgICBwcm9kdWN0X3Jlc3VsdCA8LSB4KnkKICAgIHJldHVybihsaXN0KHN1bSA9IHN1bV9yZXN1bHQsIHByb2R1Y3QgPSBwcm9kdWN0X3Jlc3VsdCkpCn0KYGBgCgpUZXN0IHlvdXIgZnVuY3Rpb24KCmBgYHtyfQpyZXN1bHQgPC0gc2ltcGxlX21hdGgoKQpwcmludChyZXN1bHQpCmBgYAoKYGBge3J9CnJlc3VsdCA8LSBzaW1wbGVfbWF0aCgzLCA0KQpwcmludChyZXN1bHQpCmBgYAoKIyBFeGVyY2lzZSA0CgpMZXQgeDMgYmUgdGhlIGZvbGxvd2luZyB2ZWN0b3IKCmBgYHtyfQp4MyA8LSBjKDAsIDEsIDEsIDIsIDIsIDIsIDMsIDMsIDQpCmBgYAoKSW1hZ2luZSB3aGF0IGEgaGlzdG9ncmFtIG9mIHgzIHdvdWxkIGxvb2sgbGlrZS4gQXNzdW1lIHRoYXQgdGhlIGhpc3RvZ3JhbSBoYXMgYSBiaW4gd2lkdGggb2YgMS4gSG93IG1hbnkgYmFycyB3aWxsIHRoZSBoaXN0b2dyYW0gaGF2ZT8gV2hlcmUgd2lsbCB0aGV5IGFwcGVhcj8gSG93IGhpZ2ggd2lsbCBlYWNoIGJlPwoKV2hlbiB5b3UgYXJlIGRvbmUsIHBsb3QgYSBoaXN0b2dyYW0gb2YgeDMgd2l0aCBiaW53aWR0aCA9IDEsIGFuZCBzZWUgaWYgeW91IGFyZSByaWdodC4KCmBgYHtyfQojIFlvdSBjYW4gbWFrZSBhIGhpc3RvZ3JhbSBvZiB4MyB3aXRoIHFwbG90KHgzLCBiaW53aWR0aCA9IDEpLiBUaGUgaGlzdG9ncmFtIHdpbGwgbG9vayBsaWtlIGEgc3ltbWV0cmljIHB5cmFtaWQuIFRoZSBtaWRkbGUgYmFyIHdpbGwgaGF2ZSBhIGhlaWdodCBvZiAzIGJ1dCBiZSBzdXJlIHRvIHRyeSBpdCBhbmQgc2VlIGZvciB5b3Vyc2VsZi4KIyBZb3UgY2FuIHVzZSBhIGhpc3RvZ3JhbSB0byBkaXNwbGF5IHZpc3VhbGx5IGhvdyBjb21tb24gZGlmZmVyZW50IHZhbHVlcyBvZiB4IGFyZS4gTnVtYmVycyBjb3ZlcmVkIGJ5IGEgdGFsbCBiYXIgYXJlIG1vcmUgY29tbW9uIHRoYW4gbnVtYmVycyBjb3ZlcmVkIGJ5IGEgc2hvcnQgYmFyLgpgYGAKCiMgRXhlcmNpc2UgNQoKIyMjIFN0ZXAgMQoKVGhlIGdncGxvdDIgcGFja2FnZSBpcyBhIHBvd2VyZnVsIHRvb2wgZm9yIGNyZWF0aW5nIGEgd2lkZSByYW5nZSBvZiBwbG90cyBhbmQgdmlzdWFsaXphdGlvbnMgaW4gUi4gMS4gSW5zdGFsbCB0aGUgZ2dwbG90MiBwYWNrYWdlIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKCmBgYHtyfQppbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikKYGBgCgpDb25maXJtIHRoYXQgdGhlIHBhY2thZ2UgaGFzIGJlZW4gaW5zdGFsbGVkIGJ5IGNoZWNraW5nIHRoZSBvdXRwdXQgaW4geW91ciBjb25zb2xlLgoKIyMjIFN0ZXAgMgoKQWZ0ZXIgaW5zdGFsbGluZyB0aGUgcGFja2FnZSwgbG9hZCBpdCBpbnRvIHlvdXIgUiBzZXNzaW9uOgoKYGBge3J9CmxpYnJhcnkoZ2dwbG90MikKYGBgCgojIyMgU3RlcCAzCgpMZXTigJlzIGNyZWF0ZSBhIHNjYXR0ZXIgcGxvdCB0byB2aXN1YWxpemUgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3byBzZXRzIG9mIG51bWJlcnMuCgoxLiAgQ3JlYXRlIHR3byB2ZWN0b3JzIG9mIG51bWJlcnM6CgpgYGB7cn0KeF92YWx1ZXMgPC0gYygxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCkKeV92YWx1ZXMgPC0gYygyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5KQpgYGAKCjIuICBVc2UgZ2dwbG90MiB0byBjcmVhdGUgYSBzY2F0dGVyIHBsb3QgZGlyZWN0bHkgZnJvbSB0aGVzZSB2ZWN0b3JzOgoKYGBge3J9CmdncGxvdCgpICsKICBnZW9tX3BvaW50KGFlcyh4ID0geF92YWx1ZXMsIHkgPSB5X3ZhbHVlcykpICsKICBsYWJzKHRpdGxlID0gIlNjYXR0ZXIgUGxvdCBvZiB4IHZzLiB5IiwKICAgICAgIHggPSAiWCBWYWx1ZXMiLAogICAgICAgeSA9ICJZIFZhbHVlcyIpCmBgYAoKIyMjIEV4cGxhbmF0aW9ucwoKVGhlIGdncGxvdCgpIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBwbG90dGluZyBlbnZpcm9ubWVudC5cCmdlb21fcG9pbnQoYWVzKHggPSB4X3ZhbHVlcywgeSA9IHlfdmFsdWVzKSkgY3JlYXRlcyBhIHNjYXR0ZXIgcGxvdCB3aXRoIHBvaW50cyBkZWZpbmVkIGJ5IHhfdmFsdWVzIGFuZCB5X3ZhbHVlcy5cCmxhYnMoKSBhZGRzIGxhYmVscyBhbmQgYSB0aXRsZSB0byB5b3VyIHBsb3QuCg==