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
rworkshop8 [2014/11/03 04:07]
johannabradie [Loop Modifications]
rworkshop8 [2014/11/03 16:18] (current)
johannabradie
Line 62: Line 62:
 </​code>​ </​code>​
  
-Curly brackets { } are used so that R knows to expect more input. ​ When using brackets, R waits to evaluate the command until the brackets have been closed. +Curly brackets { } are used so that R knows to expect more input. ​ When using brackets, R waits to evaluate the command until the brackets have been closed. ​ If the curly brackets are not used, R may not behave as you are expecting. ​ For example, try:
- +
-If the curly brackets are not used, R may not behave as you are expecting. ​ For example, try:+
  
 <code rsplus> <code rsplus>
Line 82: Line 80:
 }  # Since all brackets are now closed, R will evaluate the commands. }  # Since all brackets are now closed, R will evaluate the commands.
 </​code>​ </​code>​
 +
 +Note that if and if/else test a single condition. ​ If you want to test a vector of conditions (and get a vector of results), you can use ifelse:
 +
 +For example,
 +<code rsplus>
 +a<-1:10
 +ifelse(a>​5,"​yes","​no"​)
 +</​code>​
 +
 +You can also use ifelse in a function to apply a function only under certain conditions:
 +
 +
 +For example,
 +<code rsplus>
 +a<​-(-4):​5
 +sqrt(ifelse(a>​=0,​a,​NA))
 +</​code>​
 +
 +**Exercise**
 +
 +<code rsplus>
 +Paws<​-"​cat"​
 +Scruffy<​-"​dog"​
 +Sassy<​-cat
 +animals<​-c(Paws,​Scruffy,​Sassy)
 +</​code>​
 +
 +1. Use an if statement to print "​meow"​ if Paws is a "​cat"​.
 +
 +<​hidden>​
 +<code rsplus>
 +if(Paws=="​cat"​) {
 +  print("​meow"​)}
 +</​code>​
 +</​hidden>​
 +
 +2. Use an if/else statement to print "​woof"​ if you supply an object that is a "​dog"​ and "​meow"​ if it is not.  Try it out with Paws and Scruffy.
 +
 +
 +<​hidden>​
 +<code rsplus>
 +if(Scruffy=="​dog"​) {
 +  print("​woof"​) ​
 +} else {
 +  print ("​meow"​)
 +}
 +
 +if(Paws=="​dog"​) {
 +  print("​woof"​) ​
 +} else {
 +  print ("​meow"​)
 +}
 +</​code>​
 +</​hidden>​
 +
 +3. Use an ifelse statement to display "​woof"​ for animals that are dogs and "​meow"​ for animals that are cats.
 +
 +<​hidden>​
 +<code rsplus>
 +ifelse(animals=="​dog","​woof","​meow"​)
 +</​code>​
 +</​hidden>​
 +
  
 ==== Loops ==== ==== Loops ====
Line 147: Line 208:
 } }
 </​file>​ </​file>​
- 
  
 The expression part of the loop can be almost anything and is usually a compound statement containing many commands. The expression part of the loop can be almost anything and is usually a compound statement containing many commands.
Line 162: Line 222:
  
 //while loops// and //repeat loops// operate similarly to //for loops//​. ​ Once you understand how //for loops// work, you should be able to use any type of loop.  You will see some examples of //while loops// and //repeat loops// in the next section. //while loops// and //repeat loops// operate similarly to //for loops//​. ​ Once you understand how //for loops// work, you should be able to use any type of loop.  You will see some examples of //while loops// and //repeat loops// in the next section.
 +
 +**Exercise**
 +
 +NEED TO WRITE IN AN EXERCISE ​
  
 ==== Loop Modifications ==== ==== Loop Modifications ====
Line 209: Line 273:
 </​file>​ </​file>​
  
-Using flow control to make a complex plot+**Exercise** 
 + 
 +NEED TO WRITE IN AN EXERCISE  
 + 
 +**Using flow control to make a complex plot**
  
 The idea here is that we have a dataset we want to plot, with concentration and uptake values, but each point has a type (Quebec or Mississippi) and a treatment ("​chilled"​ or "​nonchilled"​) and we want to plot the points differently for these cases.  ​ The idea here is that we have a dataset we want to plot, with concentration and uptake values, but each point has a type (Quebec or Mississippi) and a treatment ("​chilled"​ or "​nonchilled"​) and we want to plot the points differently for these cases.  ​
Line 238: Line 306:
  
 </​file>​ </​file>​
 +
 +**Exercise**
 +
 +NEED TO WRITE IN AN EXERCISE ​
  
 <file rsplus> <file rsplus>
 </​file>​ </​file>​