From 61927817a7b47cdb804091d8e5ddc5b165efc80d Mon Sep 17 00:00:00 2001 From: Guilherme Borges Dias Date: Tue, 15 Oct 2024 11:26:04 +0200 Subject: [PATCH] edit lessons vectors and data frames, add images --- images/data_frame.png | Bin 0 -> 32328 bytes images/data_structures.png | Bin 71277 -> 71223 bytes slide_r_elements_2.Rmd | 6 +- slide_r_elements_3.Rmd | 321 +++++++++++++++++++++++++++---------- 4 files changed, 238 insertions(+), 89 deletions(-) create mode 100644 images/data_frame.png diff --git a/images/data_frame.png b/images/data_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa118011595da5b31dd04f9f00869b0892943a4 GIT binary patch literal 32328 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 delta 27075 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 diff --git a/slide_r_elements_2.Rmd b/slide_r_elements_2.Rmd index 0c1f8809..d59be731 100644 --- a/slide_r_elements_2.Rmd +++ b/slide_r_elements_2.Rmd @@ -1,5 +1,5 @@ --- -title: "Introduction To Programming in R (2)" +title: "Vectors" subtitle: "R Foundations for Data Analysis" author: "Marcin Kierczak, Sebastian DiLorenzo, Guilherme Dias" keywords: bioinformatics, course, scilifelab, nbis, R @@ -45,9 +45,9 @@ name: contents - **numbers as vectors** - **strings as vectors** - matrices -- lists - data frames -- objects +- lists + - repeating actions: iteration and recursion - decision taking: control structures - functions in general diff --git a/slide_r_elements_3.Rmd b/slide_r_elements_3.Rmd index 1128ffcb..64834c71 100644 --- a/slide_r_elements_3.Rmd +++ b/slide_r_elements_3.Rmd @@ -1,7 +1,7 @@ --- -title: "Matrices, Lists, Dataframes, S3 and S4 Objects." -subtitle: "Elements of the R language" -author: "Marcin Kierczak" +title: "Matrices, Data Frames, and Lists" +subtitle: "R Foundations for Data Analysis" +author: "Marcin Kierczak, Guilherme Dias" keywords: bioinformatics, course, scilifelab, nbis, R output: xaringan::moon_reader: @@ -42,9 +42,9 @@ name: contents - numbers as vectors - strings as vectors - **matrices** -- **lists** - **data frames** -- **objects** +- **lists** + - repeating actions: iteration and recursion - decision taking: control structures - functions in general @@ -56,7 +56,7 @@ name: matrices # Matrices -A **matrix** is a 2-dimensional data structure, like vector, it consists of elements of the same type. A matrix has *rows* and *columns*. +A **matrix** is a 2-dimensional data structure. Like vectors, it consists of elements of the same type. A matrix has *rows* and *columns*. Say, we want to construct this matrix in R: $$\mathbf{X} = \left[\begin{array} @@ -72,12 +72,32 @@ X <- matrix(1:9, # a sequence of numbers to fill in X ``` +--- +name: matrices_dim + +# Matrices — dimensions + +To check the dimensions of a matrix, use `dim()`: +```{r matrix.dim, echo=T} +X +dim(X) # 3 rows and 3 columns +``` + + --- name: matrices_indexing # Matrices — indexing -Elements of a matrix are retrieved using the '[]' notation, like we have seen for vectors. Here, we have to specify 2 dimensions -- the row and the column: +Elements of a matrix are retrieved using the `[]` notation. +We have to specify 2 dimensions -- the rows and the columns: + +$$\mathbf{X} = \left[\begin{array} +{rrr} +1 & 2 & 3 \\ +4 & 5 & 6 \\ +7 & 8 & 9 +\end{array}\right]$$ ```{r matrix.ind, echo=T} X[1,2] # Retrieve element from the 1st row, 2nd column @@ -87,27 +107,22 @@ X[,2] # Retrieve the 2nd column --- name: matrices_indexing_2 +exclude: true # Matrices — indexing cted. +$$\mathbf{X} = \left[\begin{array} +{rrr} +1 & 2 & 3 \\ +4 & 5 & 6 \\ +7 & 8 & 9 +\end{array}\right]$$ + ```{r matrix.ind2, echo=T} X[c(1,3),] # Retrieve rows 1 and 3 X[c(1,3),c(3,1)] ``` ---- -name: matrices_dim - -# Matrices — dimensions - -To check the dimensions of a matrix, use dim(): -```{r matrix.dim, echo=T} -X -dim(X) # 3 rows and 3 columns -``` - -Nobody knows why dim() does not work on vectors... use length() instead. - --- name: matrices_oper_1 @@ -126,21 +141,21 @@ name: matrices_t # Matrices — transposition -To **transpose** a matrix use t(): +To **transpose** a matrix use `t()`: ```{r matrix.t, echo=T} X t(X) ``` -Nobody knows why dim() does not work on vectors... use length() instead. --- name: matrices_oper_2 +exclude: true # Matrices — operations 2 -To get the diagonal, of the matrix: +To get the diagonal of the matrix: ```{r matrix.diag, echo=T} X diag(X) # get values on the diagonal @@ -148,10 +163,11 @@ diag(X) # get values on the diagonal --- name: matrices_tri +exclude: true # Matrices — operations, triangles -To get the upper or the lower triangle use **upper.tri()** and **lower.tri()** respectively: +To get the upper or the lower triangle use `upper.tri()` and `lower.tri()` respectively: ```{r matrix.tri, echo=T} X # print X @@ -177,6 +193,7 @@ A %*% B # Matrix multiplication --- name: matrices_outer +exclude: true # Matrices — outer @@ -187,10 +204,11 @@ outer(letters[1:4], LETTERS[1:4], paste, sep="-") --- name: matrices_expand_grid +exclude: true # Expand grid -But **expand.grid()** is more convenient when you want, e.g. generate combinations of variable values: +But `expand.grid()` is more convenient when you want, e.g. generate combinations of variable values: ```{r matrix.expand.grid, echo=T} expand.grid(height = seq(120, 121), weight = c('1-50', '51+'), @@ -202,7 +220,7 @@ name: matrices_apply # Matrices — apply -Function **apply** is a very useful function that applies a given function to either each value of the matrix or in a column/row-wise manner. Say, we want to have mean of values by column: +Function `apply` is a very useful function that applies a given function to either each value of the matrix or in a column/row-wise manner. Say, we want to have mean of values by column: ```{r matrix.apply, echo=T} X @@ -211,17 +229,17 @@ apply(X, MARGIN=2, mean) # MARGIN=1 would do it for rows --- name: matrices_apply_2 +exclude: true # Matrices — apply cted. -And now we will use *apply()* to replace each element it a matrix with its deviation from the mean squared: +And now we will use `apply()` to calculate for each element in a matrix its deviation from the mean squared: ```{r matrix.apply2, echo=T} X my.mean <- mean(X) apply(X, MARGIN=c(1,2), - function(x, my.mean) (x - my.mean)^2, - my.mean) + function(x, my.mean) (x - my.mean)^2, my.mean) ``` --- @@ -229,11 +247,11 @@ name: matrices_colSums # Matrices — useful fns. -While *apply()* is handy, it is a bit slow and for the most common statistics, there are special functions col/row Sums/Means: +While `apply()` is handy, it is a bit slow and for the most common statistics, there are special functions col/row Sums/Means: ```{r matrix.colSums, echo=T} X -colSums(X) +colMeans(X) ``` These functions are faster! @@ -242,7 +260,7 @@ name: matrices_add_row_col # Matrices — adding rows/columns -One may wish to add a row or a column to an already existing matrix or to make a matrix out of two or more vectors of equal length: +To add rows or columns to a matrix; or to make a matrix out of two or more vectors of equal length: ```{r matrix.binding, echo=T} x <- c(1,1,1) @@ -253,6 +271,7 @@ rbind(x,y) --- name: matrices_arrays +exclude: true # Matrices — more dimensions @@ -261,6 +280,7 @@ dim(Titanic) ``` -- +exclude: true ```{r matrix.Titanic.plot, echo=F, message=F, fig.width = 6, fig.height = 3.5, dpi=120} library(vcd) @@ -268,98 +288,98 @@ mosaic(Titanic, gp_labels=gpar(fontsize=7)) ``` --- -name: lists_1 - -# Lists — collections of various data types - -A list is a collection of elements that can be of various data types: - -```{r lists, echo=T} -name <- c('R2D2', 'C3PO', 'BB8') -weight <- c(21, 54, 17) -data <- list(name=name, weight) -data -data$name -data[[1]] -``` +name: data_frames_1 ---- -name: lists_2 +# Data frames -# Lists — collections of various data types +- **Data frames** are also two-dimensional data structures. +- Different columns can have different data types! +- Technically, a data frame is just a list of vectors. -Elements of a list can also be different data structures: +-- +

-```{r lists2, echo=T} -weight <- matrix(sample(1:9, size = 9), nrow=3) -data <- list(name, weight) -data -data[[2]][3] -``` +
+.size-70[ +![](images/data_frame.png) +] +
--- -name: data_frames_1 +name: data_frames_create -# Data frames +# Data frames — creating a data frame -A **data frame** or a **data table** is a data structure very handy to use. In this structure elements of every column have the same type, but different columns can have different types. Technically, a data frame is a list of vectors... -```{r data.frame1, echo=T} +```{r data.frame.create, echo=T} df <- data.frame(c(1:5), LETTERS[1:5], - sample(c(TRUE, FALSE), size = 5, - replace=T)) + c(T,F,F,T,T)) df ``` + --- -name: data_frames_2 +name: data_frames_columns -# Data frames — cted. +# Data frames — name your columns! -As you have seen, columns of a data frame are named after the call that created them. Not always the best option... -```{r data.frame2, echo=T} -df <- data.frame(no=c(1:5), - letter=c('a','b','c','d','e'), - isBrown=sample(c(TRUE, FALSE), - size = 5, - replace=T)) +- Always try to give meaningful names to your columns + +```{r data.frame.name, echo=T} +df <- data.frame(numbers=c(1:5), + letters=c('a','b','c','d','e'), + logical=c(T,F,F,T,T)) df ``` --- -name: data_frames_acccessing +name: data_frames_accessing # Data frames — accessing values -As you have seen, columns of a data frame are named after the call that created them. Not always the best option... +- We can always use the `[]` notation to access values inside data frames. ```{r data.frame.access, echo=T} df[1,] # get the first row -df[,2] # the first column -df[2:3, 'isBrown'] # get rows 2-3 from the isBrown column -df$letter[1:2] # get the first 2 letters +df[,2] # the second column +df[2:3, 'letters'] # get rows 2-3 from the 'letters' column ``` +--- +name: data_frames_dollar + +# Data frames — accessing values + +- We can also use dollar sign `$` to access columns + +```{r data.frame.dollar, echo=T} +df$letters # get the column named 'letters' +df$letters[2:3] # get the second and third elements of the column named 'letters' +``` + + --- name: data_frames_factors_1 +exclude: true # Data frames — factors An interesting observation: -```{r data.frame.factor, echo=T} +```{r data.frame.factor, echo=T, eval=F} df$letter df$letter <- as.character(df$letter) df$letter ``` --- name: data_frames_factors_2 +exclude: true # Data frames — factors cted. To treat characters as characters at data frame creation time, one can use the **stringsAsFactors** option set to TRUE: -```{r data.frame.factor2, echo=T} +```{r data.frame.factor2, echo=T, eval=F} df <- data.frame(no=c(1:5), letter=c("a","b","c","d","e"), isBrown=sample(c(TRUE, FALSE), @@ -379,10 +399,11 @@ To get or change row/column names: ```{r data.frame.names, echo=T} colnames(df) # get column names +colnames(df) <- c('num','let','logi') # assign column names +colnames(df) rownames(df) # get row names -rownames(df) <- letters[1:5] +rownames(df) <- letters[1:5] # assign row names rownames(df) -df['b', ] ``` --- @@ -390,18 +411,138 @@ name: data_frames_merging # Data frames — merging -A very useful feature of R is merging two data frames on certain key using **merge**: +We can merge two data frames on certain a key using `merge()`: ```{r data.frame.merge, echo=T} -df1 <- data.frame(no=c(1:5), - letter=c("a","b","c","d","e")) -df2 <- data.frame(no=c(1:5), - letter=c("A","B","C","D","E")) -merge(df1, df2, by='no') +age <- data.frame(ID=c(1:4), + age=c(37,48,22,NA)) +clinical <- data.frame(ID=c(1:4), + status=c("sick","healthy","healthy","sick")) +patients <- merge(age, clinical, by='ID') +patients +``` + +--- +name: data_frames_summarizing + +# Data frames — summarising + +To get an overview of the data in each column, use `summary()`: + +```{r data.frame.summary, echo=T} +summary(patients) +``` + +--- +name: data_frames_missing + +# Data frames — missing data + +We can use functions to deal with missing values: + +```{r data.frame.missing, echo=T} +is.na(patients) # check where the NAs are +na.omit(patients) # remove all rows containing NAs +patients[rowSums(is.na(patients)) > 0,] # select rows containing NAs +``` + + +--- +name: lists_1 + +# Lists — collections of various data types + +A list is a collection of elements: + +```{r lists, echo=T} +bedr <- data.frame(product = c("POANG", "MALM", "RENS"), + type = c("chair", "bed", "rug"), + price = c(1200, 2300, 899)) +rest <- data.frame(dish = c("kottbullar", "daimtarta"), + price = c(89, 32)) +park <- 162 + +ikea_uppsala <- list(bedroom = bedr, + restaurant = rest, + parking = park) +str(ikea_uppsala) # str (structure) of an object +``` + +--- +name: lists_subsetting_double + +# Subsetting lists + +We can access elements of a list using the `[[]]` notation. + +```{r lists_subsetting_double, echo=T} +ikea_uppsala[[2]] +class(ikea_uppsala[[2]]) +``` + +--- +name: lists_subsetting_single + +# Subsetting lists — .cted + +What if we use `[]`? We get a list back! + +```{r lists_subsetting_single, echo=T} +ikea_uppsala[2] +class(ikea_uppsala[2]) +``` + +-- + +- A piece of a list is still a list! Use `[[]]` to pull out the actual data. + +--- +name: lists_subsetting_names + +# Subsetting lists — using names + +If the elements of a list are named, we can also use the `$` notation: + +```{r lists_subsetting_names, echo=T} +ikea_uppsala$restaurant +ikea_uppsala$restaurant$price +``` + +--- +name: lists_nested + +# Lists inside lists + +We can use lists to store hierarchies of data: + +```{r lists_nested, echo=T} +ikea_lund <- list(park = 125) +ikea_sweden <- list(ikea_lund = ikea_lund, + ikea_uppsala = ikea_uppsala) +# use names to navigate inside the hierarchy +ikea_sweden$ikea_lund$park +ikea_sweden$ikea_uppsala$park +``` + + +--- +name: lists_2 +exclude: true + +# Lists — collections of various data types + +Elements of a list can also be different data structures: + +```{r lists2, echo=T, eval=F} +weight <- matrix(sample(1:9, size = 9), nrow=3) +data <- list(name, weight) +data +data[[2]][3] ``` --- name: objects_type_class +exclude: true # Objects — type vs. class @@ -416,6 +557,7 @@ typeof(size) # Of integer type --- name: objects_str +exclude: true # Objects — structure @@ -429,6 +571,7 @@ object.size(hist) # How much memory the object consumes --- name: objects_fix +exclude: true # Objects — fix @@ -442,6 +585,7 @@ attr(his, "names") --- name: objects_lists_as_S3 +exclude: true # Lists as S3 classes @@ -458,6 +602,7 @@ However, that was it. We cannot enforce that *numbers* will contain numeric valu --- name: objects_S3 +exclude: true # S3 classes @@ -479,6 +624,7 @@ print(his) # Gibberish but no error... --- name: objects_generics +exclude: true # S3 classes — still useful? @@ -486,6 +632,7 @@ Well, S3 class mechanism is still in use, esp. when writing **generic** function --- name: objects_S4 +exclude: true # S4 class mechanism @@ -501,6 +648,7 @@ my.gene <- new('gene', name='ANK3', --- name: objects_S4_slots +exclude: true # S4 class — slots @@ -513,6 +661,7 @@ my.gene@coords[2] # access the 2nd element in slot coords --- name: objects_S4_methods +exclude: true # S4 class — methods