Traitement et Analyse Informatiques de Données Biologiques (STAT0077)


TP 1: Introduction au language R

Prof. Patrick E. Meyer

Version 2.0

Assignations

  1. Si les variables a, b, d contiennent respectivement les nombres 2, 6 et 1, quelles sont leurs valeurs après l'exécution de chacune des suites d'assignations ci-dessous ?

    a) > a <- b   d) > d <- a
      > d <- b     > a <- b
            > b <- d
    b) > a <- a + 1   e) > b <- -a
      > b <- d + 1     > b <- 2 * b
      > d <- 2 * d     > a <- b
    c) > a <- b   f) > a <- a * a
      > d <- a     > a <- a * a

  2. Écrire une suite d'assignations permettant d'échanger les valeurs de 2 variables $a$ et $b$, c'est-à-dire qu'après exécution de ces lignes, la variable $a$ contient la valeur initiale de $b$ et vice-versa.

Fonctions sur réels

  1. Que fait la fonction suivante?
    > fonction1 <- function(eu)
    {
        fb <- 40.3399*eu
        fb
    }
    

    Que s'affiche-t-il lorsqu'on écrit les lignes suivantes:

        > fonction1(100)
        > fonction1(200000)
        > fonction1(fonction1(1))
    

    Quel autre nom pourriez-vous donner à $fonction1$ ?

  2. Que fait la fonction suivante?
    > fonction2 <- function(a,b)
    {
        a <- a + b
        a + b
    }
    

    Que s'affiche-t-il lorsqu'on écrit les lignes suivantes:

        > b <- 8
        > a <- 13
        > fonction2(b,a)
        > a
    

    Quel autre nom pourriez-vous donner à $fonction2$ ?

  3. Écrire une fonction $bmi()$ qui reçoit deux nombres $weight$ et $height$, et qui calcule le body mass index (unités: mètre et kilo) $bmi=\frac{weight}{height^2}$.

  4. Écrire une fonction qui reçoit une température en degrés Fahrenheit, et qui la convertit en degrés Celsius, sachant que celle-ci s'obtient en retranchant $32$ de la valeur en degrés Fahrenheit et en multipliant le résultat par $\frac{5}{9}$.

  5. La distance euclidienne entre 2 points de coordonnées $(x_1, y_1)$ et $(x_2, y_2)$ est donnée par la formule :

    \begin{displaymath}s = \sqrt{(x_1-x_2)^2 + (y_1-y_2)^2} \end{displaymath}

    Écrire une fonction qui reçoit les coordonnées de 2 points et calcule la distance entre ces 2 points (vous pouvez utiliser la fonction $sqrt$).

Vecteurs

  1. Que s'affiche-t-il lorsqu'on écrit les lignes suivantes:
      > weight <- c(60, 72, 57, 90, 95, 72)
      > height <- c(1.75, 1.80, 1.65, 1.90, 1.74, 1.91)
      > bmi(weight,height) # cf exercice bmi de la section précédente
    

  2. Que s'affiche-t-il lorsqu'on écrit les lignes suivantes:
      > a <- c(TRUE,FALSE,FALSE,TRUE)
      > b <- c(FALSE,FALSE,TRUE,TRUE)
      > b|a
      > a&!b
    

  3. Soit les assignations suivantes:
     > e <- c(1,2,3,5,8,13,21,34,55)
     > f <- c(4,6,7,9)
     > g <- rep("hello",10)
     > h <- 50:60
    
    Que s'affiche t'il après chacune de ces lignes?
     > e[5]
     > e[6:9]
     > h[f[1:3]]
     > e[f-2]
     > g[e[f-3]]
     > c(e,f)
     > f[c(TRUE,FALSE,TRUE,FALSE)]
     > f > 7
     > f[f > 6]
     > f[-2]
     > h[-c(4,6)]
    

  4. Soient deux vecteurs $POS$ et $DON$ de longueur $n$. Écrire un extrait de code qui affiche les éléments de $DON$ dans l'ordre indiqué par $POS$ (qui contient les entiers de 1 à $n$).

    Exemple ($n = 4$)

    DON: 9 6 8 2
    POS: 2 4 3 1

    donne $6 \;\; 2 \;\; 8 \;\; 9$.

  5. Écrire un extrait de code qui calcule le produit scalaire de deux vecteurs ($u,v$) de longueur $n$ :

    \begin{displaymath}\sum_{i=1}^n u_i \cdot v_i \end{displaymath}

    Vous pouvez utiliser la fonction $sum()$.


<--- BACK