## # Leslie REGAD # Gaëlle LELANDAIS ## #--------------------------------------------------------------------------- # Exercice 1 #--------------------------------------------------------------------------- # calcul de la valeur de cosinus de 65 cos(65) # pour afficher le résultat avec source("Commandes.R"), il faut ajouter la fonction print() print(cos(65)) print(cos(25)) print(cos(90)) phrase = "un bon bioinformaticien ne peut pas travailler sans connaitre le langage R" # affichage print(phrase) # conversion en majuscules phraseMaj = toupper(phrase) # affichage du résultat print(phraseMaj) # nbre de caractères nbreCarac = nchar(phrase) # affichage du résultat print(nbreCarac) #--------------------------------------------------------------------------- # Exercice 2 #--------------------------------------------------------------------------- print(4850/26) # seulement trois décimales print(round(4850/26, 3)) # autre fonctions R : ceiling(); floor(); etc. print(ceiling(4850/26)) print(floor(4850/26)) #--------------------------------------------------------------------------- # Exercice 3 #--------------------------------------------------------------------------- print(pi) print(round(pi, 3)) print(round(pi, 5)) pi = pi + 12 print(pi) pi = 9 print(pi) #--------------------------------------------------------------------------- # Exercice 4 #--------------------------------------------------------------------------- vec1 = 1:12 vec1 = c(vec1, c(16, 17, 18)) #--------------------------------------------------------------------------- # Exercice 5 #--------------------------------------------------------------------------- vec2 = c(0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5) vec2 = seq(0, 5, by = 0.5) #--------------------------------------------------------------------------- # Exercice 6 #--------------------------------------------------------------------------- vec3 = seq(2, 50, by = 2) vec4 = rep(0:10, each = 3) vec5 = rep(LETTERS, 1:26) print(length(vec5)) #--------------------------------------------------------------------------- # Exercice 7 #--------------------------------------------------------------------------- vec6 = paste("individu", 1:100, sep = "") #--------------------------------------------------------------------------- # Exercice 8 #--------------------------------------------------------------------------- matIdentite = matrix(0, ncol = 10, nrow = 10) diag(matIdentite) = rep(1, 10) matAleatoire = matrix(rnorm(100, mean = 0, sd = sqrt(5)), ncol = 10, nrow = 10) #--------------------------------------------------------------------------- # Exercice 9 #--------------------------------------------------------------------------- print(date()) dateJour = date() m1 = 3 m2 = "promotions assistent au cours de R qui a lieu le" print(paste(m1, m2, dateJour)) #--------------------------------------------------------------------------- # Exercice 10 #--------------------------------------------------------------------------- vecX = 1:20 print(vecX[1:5] * vecX[1:5]) print(sum(vecX)) sinusX = sin(vecX) xNeg = which(sinusX < 0) # nbre de valeurs négatives print(sum(sinusX < 0)) # remplacement par 0 sinusX[xNeg] = 0 xEven = sinusX[seq(2, length(sinusX), by = 2)] xOdd = sinusX[seq(1, length(sinusX), by = 2)] matCombine = cbind(xEven, xOdd) #--------------------------------------------------------------------------- # Exercice 11 #--------------------------------------------------------------------------- data(precip) # liste des villes print(names(precip)) # nombre de villes print(length(precip)) # niveau de précipitation de certaines villes print(precip[c("Philadelphia", "Columbia", "Baltimore", "Sacramento")]) #--------------------------------------------------------------------------- # Exercice 12 #--------------------------------------------------------------------------- x1 = rnorm(100, 0, 1) x2 = runif(100, min = 0, max = 10) m1 = cbind(x1[1:10], x2[1:10]) m2 = cbind(x1[c(16, 51, 79, 31, 27)], x2[c(30, 70, 12, 49, 45)]) m12 = rbind(m1, m2) # dimensions de la matrice print(dim(m12)) #--------------------------------------------------------------------------- # Exercice 13 #--------------------------------------------------------------------------- sumCumul = 0 for(i in 1:10){ print(i) sumCumul = sumCumul + i } # affichage de la somme cumulée print(sumCumul) #--------------------------------------------------------------------------- # Exercice 14 #--------------------------------------------------------------------------- matAlea = matrix(rnorm(100), 10, 10) if(sum(matAlea) > 15){ print("la somme est superieure à 15") }else{ print("la somme est inferieure à 15") } #--------------------------------------------------------------------------- # Exercice 15 #--------------------------------------------------------------------------- vecPasMultiple = (1:100)[1:100 %% 5 != 0] ###modulo : reste de la division. #Ici on ne conserve que les nombres qui ne sont pas divisiblent par 5. #--------------------------------------------------------------------------- # Exercice 16 #--------------------------------------------------------------------------- A = matrix(0, 10, 10) diag(A) = rep(2, 10) for(i in 1:9){ A[i, i+1] = -1 A[i+1, i] = 1 } #--------------------------------------------------------------------------- # Exercice 17 #--------------------------------------------------------------------------- vecAlea = rnorm(100, mean = 4, sd = 5) # indices des valeurs > 3 print(which(vecAlea > 3)) vecSup3 = vecAlea[which(vecAlea > 3)] valSomme = sum(vecSup3) if(valSomme > 40){ print("la somme est > 40") }else if(valSomme > 30){ print("la somme est > 30") }else if(valSomme > 20){ print("la somme est > 20") }else{ print("la somme est < 20") } #--------------------------------------------------------------------------- # Exercice 18 #--------------------------------------------------------------------------- matrice = matrix(NA, 10, 10) for(j in 1:10){ matrice[,j] = rnorm(10, mean = j, sd = j) } # nbre d'éléments > 0 print(sum(matrice > 0)) # nbre d'éléments < 0 print(sum(matrice < 0)) print(apply(matrice, 2, mean)) print(apply(matrice, 1, mean)) #--------------------------------------------------------------------------- # Exercice 19 #--------------------------------------------------------------------------- data("WorldPhones") print(WorldPhones) # classe de l'objet importé dans R ? data.class(WorldPhones) nbrTelAn = apply(WorldPhones, 1, sum) nbrTelCont = print(apply(WorldPhones, 2, sum)) # continent avec le plus de numéros print(names(nbrTelCont)[which(nbrTelCont == max(nbrTelCont))]) # continent avec le moins de numéros print(names(nbrTelCont)[which(nbrTelCont == min(nbrTelCont))]) # nbre de continents avec plus de 20000, 50000 et 20000 numéros print(sum(nbrTelCont > 20000)) print(sum(nbrTelCont > 50000)) print(sum(nbrTelCont > 200000)) #--------------------------------------------------------------------------- # Exercice 20 #--------------------------------------------------------------------------- # simulation du lancer de 100 pièces de monnaie print(sample(c("pile", "face"), size = 100, rep = TRUE)) vecSampleBiais = sample(c("pile", "face"), size = 100, rep = TRUE, prob = c(0.3, 0.7)) # proportion de pile print(sum(vecSampleBiais == "pile") / length(vecSampleBiais)) #--------------------------------------------------------------------------- # Exercice 21 #--------------------------------------------------------------------------- tailleF = floor(rnorm(257, mean = 165, sd = 6)) tailleH = floor(rnorm(312, mean = 175, sd = 7)) poidsF = floor(rnorm(257, mean = 60, sd = 2)) poidsH = floor(rnorm(312, mean = 75, sd = 4)) combineData = data.frame(c(tailleF, tailleH), c(poidsF, poidsH), c(rep("F", 257), rep("H", 312))) colnames(combineData) = c("Taille", "Poids", "Sexe") # plus petite taille des femmes print(min(combineData[which(combineData$Sexe == "F"),"Taille"])) # plus petite taille des hommes print(min(combineData[which(combineData$Sexe == "H"),"Taille"])) # plus petit poids des femmes print(min(combineData[which(combineData$Sexe == "F"),"Poids"])) # plus petit poids des hommes print(min(combineData[which(combineData$Sexe == "H"),"Poids"])) # nbre d'individus sélectionnés print(nrow(combineData[(combineData$Taille > 170) & (combineData$Poids < 75),])) # nbre de femmes print(nrow(combineData[(combineData$Taille > 170) & (combineData$Poids < 75) & (combineData$Sexe == "F"),])) # nbre d'hommes print(nrow(combineData[(combineData$Taille > 170) & (combineData$Poids < 75) & (combineData$Sexe == "H"),])) #--------------------------------------------------------------------------- # Exercice 22 #--------------------------------------------------------------------------- S = sample(c("A", "T", "C", "G"), size = 1000, replace = T) # nbre de A, T, C, G print(sum(S == "A")) print(sum(S == "T")) print(sum(S == "C")) print(sum(S == "G")) SA = rep(0, length(S)) SA[which(S == "A")] = 1 ST = rep(0, length(S)) ST[which(S == "T")] = 1 SC = rep(0, length(S)) SC[which(S == "C")] = 1 SG = rep(0, length(S)) SG[which(S == "G")] = 1 #--------------------------------------------------------------------------- # Exercice 23 #--------------------------------------------------------------------------- mot1 = "parisien" mot2 = "aspirine" # transformation des deux mots en listes l1 = unlist(strsplit(mot1, "")) l2 = unlist(strsplit(mot2, "")) # pour être des anagrammes les mots doivent avoir la même taille if(length(l1) == length(l2)){ for(lettre in l1){ print(lettre) if(is.element(lettre, l2) == TRUE){ print("trouve") # la première lettre correcte trouvée est retirée de l2 l2 = l2[-which(l2 == lettre)[1]] }else{ print("non trouve") print(paste(mot1, "et", mot2, "ne sont pas des anagrammes")) # pour sortir de la boucle break } } if(length(l2) == 0){ print(paste(mot1, "et", mot2, "sont bien des anagrammes")) } }else{ print(paste(mot1, "et", mot2, "ne sont pas des anagrammes")) } # autre solution, plus rapide setequal(l1, l2) #--------------------------------------------------------------------------- # Exercice 24 #--------------------------------------------------------------------------- somme = function(x, y){ return(x + y) } # test de la fonction somme(x = 18, y = 35) #--------------------------------------------------------------------------- # Exercice 25 #--------------------------------------------------------------------------- calculTarif = function(age){ if(age < 12){ print("tarif reduit") }else if(age > 60){ print("tarif senior") }else{ print("plein tarif") } # fin de la fonction } # tests de la fonction for(i in c(5, 65, 85, 41, 23, 47)){ calculTarif(age = i) } #--------------------------------------------------------------------------- # Exercice 26 #--------------------------------------------------------------------------- resMention = function(note){ if((note < 0) || (note > 20)){ print("la note est incorrecte...") }else{ if(note < 10){ print("non admis") }else if((note > 10) & (note < 12)){ print("admis, sans mention") }else if((note > 12) & (note < 14)){ print("admis, mention AB") }else if((note > 14) & (note < 16)){ print("admis, mention B") }else if(note > 16){ print("admis, mention TB") } } # fin de la fonction } # test de la fonction resMention(note = 14) #--------------------------------------------------------------------------- # Exercice 27 #--------------------------------------------------------------------------- formule = function(x){ y = ((4*x^4)/18) + ((8.34*x)/5) return(y) # fin de la fonction } vecY = NULL for(i in c(15, 89, 56, 78, 152, 66, 48, 77, 2, 96)){ vecY = c(vecY, formule(x = i)) } print(vecY) #--------------------------------------------------------------------------- # Exercice 28 #--------------------------------------------------------------------------- nbrePremier = function(N){ # variable qui contient le nbre de diviseurs nbreDiv = 0 # variable qui retourne le statut du nombre (premier = 1; pas premier = 0) res = NULL if(N == 1){ print("1 est un nombre premier") res = 1 }else{ for(i in 1:N){ if((N %% i) == 0){ nbreDiv = nbreDiv + 1 } else{ } } if(nbreDiv == 2){ print(paste(N, "est un nombre premier")) res = 1 }else{ print(paste(N, "n'est pas un nombre premier")) res = 0 } } return(res) # fin de la fonction } # tests de la fonction vecNbrPrem = NULL for(i in 1:100){ if(nbrePremier(i) == 1){ vecNbrPrem = c(vecNbrPrem, i) } } print(vecNbrPrem) #--------------------------------------------------------------------------- # Exercice 29 #--------------------------------------------------------------------------- palindrome = function(motIni){ # élimination des éventuels espaces mot = gsub(" ", "", motIni) l = unlist(strsplit(mot, "")) # pour dénombrer le nombre de lettres OK lettresOK = 1 for(i in 1:(length(l)-1)){ if(l[i] == l[length(l)-i+1]){ lettresOK = lettresOK + 1 }else{ print(paste(motIni, "n'est pas un palindrome")) break } if(lettresOK == length(l)){ print(paste(motIni, "est un palindrome")) } } # fin de la fonction } # tests de la fonction for(i in c("radar", "hannah", "sept", "kayak", "la mariée ira mal", "capitaine", "engage le jeu que je le gagne")){ palindrome(i) } #--------------------------------------------------------------------------- # Exercice 30 #--------------------------------------------------------------------------- compteNucleo = function(sequence){ # liste des lettres à dénombrer listeLettres = c("A", "U", "C", "G") # pour identifier la lettre la plus fréquente valMax = 0 lettreMax = NULL for(i in listeLettres){ nbreLettre = sum(sequence == i) if(nbreLettre > valMax){ valMax = nbreLettre lettreMax = i }else{ } } print(paste("Lettre max", lettreMax, "- Nbre occurence", valMax)) return(list(lettre = lettreMax, occur = valMax)) # fin de la fonction } seq1 = sample(c("A", "U", "C", "G"), 50, replace = T) seq2 = sample(c("A", "U", "C", "G"), 60, replace = T) seq3 = sample(c("A", "U", "C", "G"), 79, replace = T) # tests de la fonction compteNucleo(seq1) compteNucleo(seq2) compteNucleo(seq3) #--------------------------------------------------------------------------- # Exercice 31 #--------------------------------------------------------------------------- poidsMol = function(t){ poids = (128 * t) - ((t - 1) * 18) return(poids) # fin de la fonction } # tests de la fonction for(i in c(25, 50, 178, 89, 345, 879)){ print(paste("Pour", i, "residus, le poids moleculaire estime est", poidsMol(i))) } #--------------------------------------------------------------------------- # Exercice 32 #--------------------------------------------------------------------------- calculIMC = function(taille, poids){ valIMC = poids / (taille * taille) print(paste("La valeur de l'IMC est", round(valIMC, 2))) return(valIMC) # fin de la fonction } # tests de la première fonction calculIMC(1.64, 64) calculIMC(1.61, 56) calculIMC(1.72, 102) calculIMC(1.65, 51) classifIMC = function(taille, poids){ # appel de la première fonction IMC = calculIMC(taille, poids) # classification if(IMC < 18.5){ print("Poids insuffisant") }else if(IMC < 24.9){ print("Poids normal") }else if(IMC < 29.9){ print("Surpoids ou pré-obésité") }else if(IMC >= 30){ print("Obésité") }else{ print("Classsification non possible..., vérifier la valeur de l'IMC") } # fin de la fonction } classifIMC(1.64, 64) classifIMC(1.61, 56) classifIMC(1.72, 102) classifIMC(1.65, 51) #--------------------------------------------------------------------------- # Exercices 33 et 34 #--------------------------------------------------------------------------- # pas de difficultées particulières, c'est juste un peu long.... #--------------------------------------------------------------------------- # Exercice 35 #--------------------------------------------------------------------------- compSeq = function(seq1, seq2){ l1 = unlist(strsplit(seq1, "-")) l2 = unlist(strsplit(seq2, "-")) # vecteur des positions mutées posMut = NULL # quelle est la plus petite sequence ? if(length(l1) <= length(l2)){ lPetite = l1 lGrande = l2 }else{ lPetite = l2 lGrande = l1 } for(i in 1:length(lPetite)){ if(lPetite[i] != lGrande[i]){ print(paste("Position", i, "Mutee : ", lPetite[i], "vs", lGrande[i]) ) posMut = c(posMut, i) } } return(posMut) # fin de la fonction } # tests de la fonction compSeq(seq1 = "SER-CYS-THR-ARG-SER-ILE-PRO-PRO-GLN-CYS", seq2 = "SER-CYS-THR-THR-SER-ILE-PRO-PRO-GLN-MET") compSeq(seq1 = "SER-SER-ASN-ASP-ASN-LEU-GLU-ALA-VAL-PHE-MET-ILE", seq2 = "SER-SER-ASN-ASP-ASN-ILE-GLU-LEU-VAL-PHE-MET") #--------------------------------------------------------------------------- # Exercice 36 #--------------------------------------------------------------------------- data(airquality) data.class(airquality) # nombre de valeurs manquantes print(sum(is.na(airquality$Ozone))) # mois à analyser (mai = 5, juillet = 7, septembre = 9) mois = c(5, 7, 9) for(i in mois){ print(paste("analyse du mois", i)) moyenne = mean(airquality$Ozone[airquality$Month == i], na.rm = T) variance = var(airquality$Ozone[airquality$Month == i], na.rm = T) print(paste("moyenne = ", round(moyenne, 3), "et variance = ", round(variance, 3))) } #--------------------------------------------------------------------------- # Exercice 37 #--------------------------------------------------------------------------- x = seq(-pi, pi, by = 0.001) y = sin(x) plot(x, y, type = "l", main = "fonction sinus", xlab = "valeur de x", ylab = "valeur y") pdf("Sinus.pdf") plot(x, y, type = "l", main = "fonction sinus") dev.off() #--------------------------------------------------------------------------- # Exercice 38 #--------------------------------------------------------------------------- x = seq(-pi, pi, by = 0.001) y1 = sin(x) y2 = cos(x) pdf("Sinus_Cosinus.pdf") plot(x, y1, type = "l", main = "Fonctions sinus et cosinus", col = "red", xlab = "valeur de x", ylab = "valeur y" ) lines (x, y2) legend ("topright", legend = c("Fonction sin", "Fonction cos"), col = c("red", "black"), pch = 19) dev.off() #--------------------------------------------------------------------------- # Exercice 39 #--------------------------------------------------------------------------- n = rnorm(1000) # histogrammes des valeurs H = hist(n, prob = T, xlab = "valeur de X", ylab = "valeur de Y", main = "loi normale CR") x = H$mids y = dnorm(x) # moyenne print(mean(n)) # variance print(var(n)) # pour la superposition des graphiques par(new = T) plot(x, y, type = "l", ylim = c(0, max(H$density)), xlim = c(min(H$breaks), max(H$breaks)), xlab = "", ylab = "", main = "") #--------------------------------------------------------------------------- # Exercice 40 #--------------------------------------------------------------------------- sequence = sample(c("A", "T", "C", "G"), 100, replace = T) write.table(sequence, file = "test.out") matrice = matrix(rnorm(25), 5, 5) write.table(matrice, file = "test2.out", row.names = F, col.names = F, quote = F) #--------------------------------------------------------------------------- # Exercice 41 #--------------------------------------------------------------------------- # pas de difficulté particulière #--------------------------------------------------------------------------- # Exercice 42 #--------------------------------------------------------------------------- data("WorldPhones") par(mfrow = c(1,2)) # numeros de telephones par annee numTel = apply(WorldPhones, 1, sum) barplot(numTel) moyTel = apply(WorldPhones, 1, mean) barplot(moyTel) dev.off() #--------------------------------------------------------------------------- # Exercice 43 #--------------------------------------------------------------------------- hist(rnorm(100, mean = 10, sd = 5), nclass = 5) hist(rnorm(100, mean = 10, sd = 5), nclass = 50) hist(rnorm(100, mean = 10, sd = 5), nclass = 100) #--------------------------------------------------------------------------- # Exercice 44 #--------------------------------------------------------------------------- plot(c(1,2,3), c(2,2,3)) plot(c(1,2,3), c(2,2,3), cex = 2) plot(c(1,2,3), c(2,2,3), cex = 2, pch = 20) plot(c(1,2,3), c(2,2,3), cex = 2, pch = 20, xlim = c(0,5), ylim = c(1,6)) plot(c(1,2,3), c(2,2,3), cex = 2, pch = 20, xlim = c(0,5), ylim = c(1,6), col = c("red", "green", "blue")) plot(c(1,2,3), c(2,2,3), cex = 2, pch = 20, xlim = c(0,5), ylim = c(1,6), col = c("red", "green", "blue"), main = "MonGraphique", xlab = "Axe X", ylab = "Axe Y") jpeg("MonGraphique.jpg") plot(c(1,2,3), c(2,2,3), cex = 2, pch = 20, xlim = c(0,5), ylim = c(1,6), col = c("red", "green", "blue"), main = "MonGraphique", xlab = "Axe X", ylab = "Axe Y") dev.off() #--------------------------------------------------------------------------- # Exercice 45 #--------------------------------------------------------------------------- data_biere = as.data.frame(read.csv ("bieres.csv", header = TRUE, sep = ",")) # comptage table_count = table (data_biere) # plot pdf("Bieres.pdf") par (mfrow = c(2,1)) barplot (table_count) pie(table_count, col = c(1,2,3,4,5)) graphics.off() #--------------------------------------------------------------------------- # Exercice 46 #--------------------------------------------------------------------------- data_note = as.data.frame(read.csv ("note2010.csv", header = TRUE, sep = ":")) #selection colonnes data_save = data_note[,c(2,4:9)] write.table(data_save, file = "notes_ex_2010.dat", row.names = T, col.names = T, quote = F) # change NA -> 0 data_note = replace(data_note,is.na(data_note),0) # calcul de stat mediane = apply (data_note[3:9], 1, median) moyenne = apply (data_note[3:9], 1, mean) ecart_type = apply (data_note[3:9], 1, sd) # note inférieur a 10 nb_inf10 = length (which (moyenne <10 )) # mention -> exo 26 resMention = function(note){ if((note < 0) || (note > 20)){ print("la note est incorrecte...") }else{ if(note < 10){ print("non admis") }else if((note > 10) & (note < 12)){ print("admis, sans mention") }else if((note > 12) & (note < 14)){ print("admis, mention AB") }else if((note > 14) & (note < 16)){ print("admis, mention B") }else if(note > 16){ print("admis, mention TB") } } # fin de la fonction } data_note = cbind (data_note, moyenne) nb_etudiant = dim (data_note) [1] for (i in seq (1, nb_etudiant)){ print (data_note[i,2]) resMention(data_note[i,10]) }