Conditionals and loops

  1. Read CpG island data as shown before (see the Input/Output exercises). Use stringsAsFactors = FALSE.
cpgi=read.csv(paste0(DATA_DIR,"Exercises/Ex_per_date/Datasets/CpGi.table.hg18.csv"), stringsAsFactors = F)

Here is an explanation of the columns:


  1. First, check “percentage of island that is CpG” values using summary().
summary(cpgi$perCpg)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   11.70   16.00   18.10   18.48   20.50   40.20

  1. Write a function to decide if a given percentage of GC is high, low or medium:
  • low < 60
  • high > 75
  • medium between 60 and 75

Then try your function by evaluating: 35, 12, 60, 90.

evCG<-function(x){

  if(x<60){
    result="low"
  }
    else if(x>75){
    result="high"
  }
    else{
    result="medium"
  }
}


print(evCG(35))
## [1] "low"
print(evCG(12))
## [1] "low"
print(evCG(60))
## [1] "medium"
print(evCG(90))
## [1] "high"

  1. Add other conditions to your function:

    • if the number inserted is negative or greater then 100 print “The number is not a percentage”
    • if anyone inserts a value that is not a number print “This is not a number”

    Notice: you have to be really carefull. Only one output is correct.

    Hint: you can do this exercise in several ways; for example, you can nest conditionals or you can use them in series. You are not obligated to use all three if, if else and else.

    Then try your function by evaluating: 35, 12, 60, 110, -3, “A”.

evCG<-function(x){
  
  if(is.numeric(x)){
  
  if(x<0 | x>100){ result="The number is not a percentage" }
  else{
  if(x<60){
    result="low"
  }
    else if(x>75){
    result="high"
  }
    else if(x>=60 & x<=75){
    result="medium"
  }
  }
  }
  else{result="This is not a number"}
  result
}


print(evCG(35))
## [1] "low"
print(evCG(12))
## [1] "low"
print(evCG(60))
## [1] "medium"
print(evCG(110))
## [1] "The number is not a percentage"
print(evCG(-3))
## [1] "The number is not a percentage"
print(evCG("A"))
## [1] "This is not a number"

  1. Use a for loop to get GC percentage classes for GC percentages of CpG island on chrX and put them into a vector. Use the function you wrote above.
gcValues=subset(cpgi, chrom=="chrX")$perGc

vec<-c()

for( i in gcValues){
vec=c(vec,evCG(i) )
 print(evCG(i))
}
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "high"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "high"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "high"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "high"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "high"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "high"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "high"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "high"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "high"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"

  1. Subset cpgi keeping only CpG island on chrY, then order rows by perGc values (increasing). Print GC percentage classes of CpG islands until perGc value is < 65. Hint: use a while() loop with an increasing index. What happens if you do not order values before using while loop?
gcValues=subset(cpgi, chrom=="chrY")
gcValues=gcValues[order(gcValues$perGc),]
gcValues=gcValues$perGc

i=1

while( gcValues[i]<65){
 print(evCG(gcValues[i]))
  i=i+1
}
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "low"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"
## [1] "medium"

  1. Multiplication table: write an R code that prints out the 9x9 multiplication table. For this problem, you need to use two for statements, one inside the other.
M<-matrix(nrow = 9, ncol = 9)


for(i in 1:9){
  for(j in 1:9){
    
    M[i,j]=i*j
    
 
  }
}
 
M
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
##  [1,]    1    2    3    4    5    6    7    8    9
##  [2,]    2    4    6    8   10   12   14   16   18
##  [3,]    3    6    9   12   15   18   21   24   27
##  [4,]    4    8   12   16   20   24   28   32   36
##  [5,]    5   10   15   20   25   30   35   40   45
##  [6,]    6   12   18   24   30   36   42   48   54
##  [7,]    7   14   21   28   35   42   49   56   63
##  [8,]    8   16   24   32   40   48   56   64   72
##  [9,]    9   18   27   36   45   54   63   72   81

  1. Create a vector v containing 10 personal names. Then:
  • build a loop that ierates on each element in v and assign a name to each element by taking a random number from a gaussian distribution. Then print the element of the vector with its name
  • print the resulting vector
v=c("Maria", "Lorenzo", "Loris", "Alessia", "Federica", "Matteo", "Roman", "Andrea", "Laura", "Marco")

for(i in 1:length(v)){
  
  names(v)[i]=rnorm(1, 10, 4)
  
  print(v[i])
  
}
## 11.3638374521713 
##          "Maria" 
## 0.850845419347563 
##         "Lorenzo" 
## 10.1743889634802 
##          "Loris" 
## 11.8613193036837 
##        "Alessia" 
## 13.2614173937047 
##       "Federica" 
## 12.4038769091364 
##         "Matteo" 
## 14.3165300468616 
##          "Roman" 
## 8.34173048135062 
##         "Andrea" 
## 8.36432345866598 
##          "Laura" 
## 5.80900802782421 
##          "Marco"
v
##  11.3638374521713 0.850845419347563  10.1743889634802  11.8613193036837 
##           "Maria"         "Lorenzo"           "Loris"         "Alessia" 
##  13.2614173937047  12.4038769091364  14.3165300468616  8.34173048135062 
##        "Federica"          "Matteo"           "Roman"          "Andrea" 
##  8.36432345866598  5.80900802782421 
##           "Laura"           "Marco"

  1. Create a matrix 9x8 with only NAs. Then, use loops and/or conditionals to fill the matrix. In particular:
  • in the fist two rows and three columns you have to put numbers from a uniform distribution
  • in all the columns of the third row you have to put a number of your choice
  • in the rows 4:9 and columns 4:8 you have to put numbers from a gaussian distribution
  • in the first row and 4:8 columns you have to put 0
  • in the rows 4:9 and columns 1:3 you have to put the result of the log10 of the element [4,4] of the matrix

Are there any missing values? At the end test the matrix using is.na()

mat=matrix(rep(NA, 9*8), ncol=8)

for(i in 1:9){
  for(j in 1:8){
   
    if(i<=2 & j<=3){
      
      mat[i, j]=runif(1)
      
    }
    else if(i==3){
      mat[i, j]=3
      
    }
    else if(i<=9 & i>=4 & j<=8 & j>=4 ){
      
       mat[i, j]=rnorm(1, 8, 4)
      
    }
    else if(i==1 & j<=9 & j>=4){
      mat[i, j]=0 

      
    }
    else if(i<=9 & i>=4 & j<=3 & j>=1 ){
      
       mat[i, j]=log10(mat[4,4])
      
    }
    
    
  }
  
}

mat
##             [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]
##  [1,] 0.07464571 0.9436147 0.4392230  0.000000  0.000000  0.000000  0.000000
##  [2,] 0.52259764 0.7212086 0.7662259        NA        NA        NA        NA
##  [3,] 3.00000000 3.0000000 3.0000000  3.000000  3.000000  3.000000  3.000000
##  [4,]         NA        NA        NA  7.838904  9.247463  2.327910 14.736730
##  [5,] 0.89425534 0.8942553 0.8942553  8.339473 12.866967 10.683047  9.094863
##  [6,] 0.89425534 0.8942553 0.8942553 12.201212 13.558040 -2.510552  6.631758
##  [7,] 0.89425534 0.8942553 0.8942553  5.784127 10.774117  3.846086 12.851234
##  [8,] 0.89425534 0.8942553 0.8942553  9.351207  3.997382 15.035513 12.016517
##  [9,] 0.89425534 0.8942553 0.8942553  2.994152  6.753279  6.890414  6.016020
##            [,8]
##  [1,]  0.000000
##  [2,]        NA
##  [3,]  3.000000
##  [4,] 12.611801
##  [5,]  4.198158
##  [6,] 10.441654
##  [7,] 13.214013
##  [8,]  7.720240
##  [9,]  5.826462
is.na(mat)
##        [,1]  [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]
##  [1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [2,] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
##  [3,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [4,]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
##  [5,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [7,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [8,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
##  [9,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

  1. Write a while loop that at each iteration add a number in the vector x from a gaussian distibution (with mean 0 and sd 1.5) but terminates if you get a number bigger than 3.
x=c()

i=0
while(i<3){
  i=rnorm(1, 0, 1.5)
  x=c(x, i)
  
}

x
##  [1]  0.51895596 -3.28199471 -2.29757934  1.91606118 -0.66291808 -0.82601543
##  [7]  1.12108824  0.39867661  1.59491768  0.80595015 -1.77629031 -1.98781733
## [13] -0.99226973  0.92400767  1.43552805 -0.78473697  0.79853115  0.58625624
## [19] -0.80499154  0.79102531 -2.37765024  1.61743166  1.78884641 -1.21334404
## [25]  0.71190856 -1.63300102  0.04902451 -3.29813060  0.80813268 -0.96579983
## [31] -1.05630159 -0.06657671  1.96182752  0.89245512  0.62695008 -1.80303973
## [37]  1.10930384 -1.62939175  1.31673105 -1.00780328 -1.47100306 -0.29132394
## [43]  0.85597704 -0.01564681 -2.93868554  1.04234101 -0.65960373  0.83299910
## [49]  2.74284291 -1.70138065 -0.99875907  2.63421318  4.28452000