Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
r_workshop5 [2018/11/14 16:26]
katherinehebert [mapply()]
r_workshop5 [2021/10/13 16:04] (current)
lsherin
Line 1: Line 1:
 +<WRAP group>
 +<WRAP centeralign>​
 +<WRAP important>​
 +<wrap em> __MAJOR UPDATE__ </​wrap> ​
 +
 +<wrap em> As of Fall 2021, this wiki has been discontinued and is no longer being actively developed. </​wrap> ​
 +
 +<wrap em> All updated materials and announcements for the QCBS R Workshop Series are now housed on the [[https://​r.qcbs.ca/​workshops/​r-workshop-05/​|QCBS R Workshop website]]. Please update your bookmarks accordingly to avoid outdated material and/or broken links. </​wrap>​
 +
 +<wrap em> Thank you for your understanding,​ </​wrap>​
 +
 +<wrap em> Your QCBS R Workshop Coordinators. </​wrap>​
 +
 +</​WRAP>​
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 ======= QCBS R Workshops ======= ======= QCBS R Workshops =======
  
Line 13: Line 30:
 **Summary:​** This workshop focuses on basic programming in R.  In this workshop, you will learn how to use control flow (for loops, if, while) methods to prevent code repetition, facilitate organization and run simulations. ​ In addition, you will learn to write your own functions, and tips to program efficiently. The last part of the workshop will discuss packages that will not covered elsewhere in this workshop series, but that may be of interest to participants. **Summary:​** This workshop focuses on basic programming in R.  In this workshop, you will learn how to use control flow (for loops, if, while) methods to prevent code repetition, facilitate organization and run simulations. ​ In addition, you will learn to write your own functions, and tips to program efficiently. The last part of the workshop will discuss packages that will not covered elsewhere in this workshop series, but that may be of interest to participants.
  
-**Link to new [[https://​qcbsrworkshops.github.io/Workshops/​workshop05/​workshop05-en/​workshop05-en.html|Rmarkdown presentation]]**+**Link to new [[https://​qcbsrworkshops.github.io/​workshop05/​workshop05-en/​workshop05-en.html|Rmarkdown presentation]]**
  
 Link to old [[https://​prezi.com/​xuu2rphp5wg4/​|Prezi presentation]] Link to old [[https://​prezi.com/​xuu2rphp5wg4/​|Prezi presentation]]
Line 289: Line 306:
 </​code>​ </​code>​
  
-Tip1. To loop over the number of rows of a data frame, we can use the function ''​nrow()''​+**Tip 1.** To loop over the number of rows of a data frame, we can use the function ''​nrow()''​
  
 <code rsplus> <code rsplus>
Line 297: Line 314:
 </​code>​ </​code>​
  
-Tip2. If we want to perform operations on the elements of one column, we can directly iterate over it+**Tip 2.** If we want to perform operations on the elements of one column, we can directly iterate over it
  
 <code rsplus> <code rsplus>
Line 305: Line 322:
 </​code>​ </​code>​
  
-The expression within the loop can be almost anything and is usually a compound statement containing many commands. +**Tip 3.** The expression within the loop can be almost anything and is usually a compound statement containing many commands.
- +
-<code rsplus>​ +
-for (i in 4:5) { # for i in 4 to 5 +
-  print(colnames(CO2)[i]) ​  +
-  print(mean(CO2[,​i])) # print the mean of that column from the CO2 dataset +
-+
-</​code>​ +
- +
-Output:+
  
 <code rsplus> <code rsplus>
Line 334: Line 342:
 } }
 </​code>​ </​code>​
- 
-<code rsplus> 
-# Output 
- 
-for (i in 1:3) { 
-  for (n in 1:3) { 
-    print (i*n) 
-  } 
-} 
-</​code>​ 
- 
  
 ==== Getting good: using the ''​apply()''​ family ====  ==== Getting good: using the ''​apply()''​ family ==== 
Line 357: Line 354:
                  nrow = 5,                   nrow = 5, 
                  ncol = 4))                  ncol = 4))
- 
 } }
- 
 apply(X = height, ​ apply(X = height, ​
       MARGIN = 1,        MARGIN = 1, 
-      FUN = mean) +      FUN = mean)     
-      ​ +?​apply ​      ​
-?​apply ​  +
-      ​+
 </​code>​ </​code>​
  
 ==== apply() ====  ==== apply() ==== 
  
-<code rsplus> + 
-lapply() applies a function to every element of a list.+''​lapply()'' ​applies a function to every element of a **list**.
  
 It may be used for other objects like dataframes, lists or vectors. It may be used for other objects like dataframes, lists or vectors.
  
-The output returned is a list (explaining the “l” in lapply) and has the same number of elements as the object passed to it. +The output returned is a **list** (explaining the “l” in lapply) and has the same number of elements as the object passed to it.
  
 +<code rsplus>
 SimulatedData <- list( SimulatedData <- list(
   SimpleSequence = 1:4,    SimpleSequence = 1:4, 
Line 412: Line 405:
  
 # Apply mean to each element of the list  # Apply mean to each element of the list 
-sapply(SimulatedData,​ mean) 
-<​code/>​ 
- 
-<code rsplus> 
-SimulatedData <- list(SimpleSequence = 1:4,  
-             ​Norm10 = rnorm(10), ​ 
-             ​Norm20 = rnorm(20, 1),  
-             ​Norm100 = rnorm(100, 5)) 
- 
-# Output 
 sapply(SimulatedData,​ mean) sapply(SimulatedData,​ mean)
 </​code>​ </​code>​
Line 951: Line 934:
 Proper indentation and spacing is the first step to get an easy to read code: Proper indentation and spacing is the first step to get an easy to read code:
  
-Use spaces between and after you operators; +  * Use spaces between and after you operators 
-Use consistentely ​the same assignation operator. <- is often preferred. = is OK, but do not switch all the time between the two; +  ​* ​Use consistently ​the same assignation operator. <- is often preferred. = is OK, but do not switch all the time between the two 
-Use brackets when using flow control statements:​ +  ​* ​Use brackets when using flow control statements:​ 
- +    ​* ​Inside brackets, indent by *at least* two spaces; 
-Inside brackets, indent by *at least* two spaces; ​Put closing brackets on a separate line, except when preceding an `else` statement.  +    * Put closing brackets on a separate line, except when preceding an `else` statement.  
-Define each variable on its own line.+  ​* ​Define each variable on its own line.
  
-code is not spaced. All brackets are in the same line, and it looks "​messy"​. ​+This code is not spaced, and therefore hard to read. All brackets are badly aligned, and it looks "​messy"​. ​
 <code rsplus> <code rsplus>
 a<-4;b=3 a<-4;b=3
Line 966: Line 949:
 </​code> ​ </​code> ​
  
-it looks more organized, no?+This looks more organized, no?
  
 <code rsplus> <code rsplus>