TP1 Introduction à R

Exercice 1

1.

v1 = rep(2, 100)
v2 = rep(c(2, 4, 6), times=c(15, 20, 10))
v3 = (-2):6
v4 = seq(0, 1.6, 0.2)
v5 = 1:25

print(v1)
##   [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [38] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
##  [75] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
print(v2)
##  [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 6 6 6
## [39] 6 6 6 6 6 6 6
print(v3)
## [1] -2 -1  0  1  2  3  4  5  6
print(v4)
## [1] 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6
print(v5)
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

2.

mask = v4 == 1
print(mask)
## [1] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
# tous FALSE sauf 6e élément. on peut le vérifier:
print(which(mask))
## [1] 6
# on peut visualiser les vecteurs superposés grâce à `rbind`
print(rbind(v3, v4))
##    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
## v3   -2 -1.0  0.0  1.0  2.0    3  4.0  5.0  6.0
## v4    0  0.2  0.4  0.6  0.8    1  1.2  1.4  1.6
mask = v3 <= v4
print(mask)
## [1]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
# les 3 premiers éléments sont TRUE
print(which(mask))
## [1] 1 2 3

3.

n_v4 = length(v4)
v6 = c(v1[1:4], v4[(n_v4 - 5):n_v4])
print(v6)
##  [1] 2.0 2.0 2.0 2.0 0.6 0.8 1.0 1.2 1.4 1.6
v6 = c(head(v1, 4), tail(v4, 6))
print(v6)
##  [1] 2.0 2.0 2.0 2.0 0.6 0.8 1.0 1.2 1.4 1.6

4.

print(v5[-c(5, 10, 15)])
##  [1]  1  2  3  4  6  7  8  9 11 12 13 14 16 17 18 19 20 21 22 23 24 25
print(v5[-seq(5, 15, 5)])
##  [1]  1  2  3  4  6  7  8  9 11 12 13 14 16 17 18 19 20 21 22 23 24 25

5.

print(prod(v5[1:6]))
## [1] 720
print(prod(1:6))
## [1] 720

Exercice 2

1.

x = seq(2, 20, 0.1)
print(length(x))
## [1] 181

2.

print(sum(log(x)))
## [1] 407.1242
print(sum(x^2))
## [1] 26842.3

Exercice 3

1.

notes = c(
  maths=17,
  "français"=12,
  anglais=10,
  phys=15,
  informatique=15
)
print(notes)
##        maths     français      anglais         phys informatique 
##           17           12           10           15           15

2.

matieres = c("maths", "francais", "anglais", "phys", "informatique")
notesbis = c(17, 12, 10, 15, 15)
names(notesbis) = matieres
print(notesbis)
##        maths     francais      anglais         phys informatique 
##           17           12           10           15           15

3.

a)

mod = mode(notes)
print(mod)
## [1] "numeric"

b)

moy = mean(notes)
print(moy)
## [1] 13.8

c)

croissant = sort(notes)
decroissant = sort(notes, decreasing=TRUE)
print(croissant)
##      anglais     français         phys informatique        maths 
##           10           12           15           15           17
print(decroissant)
##        maths         phys informatique     français      anglais 
##           17           15           15           12           10

4.

a)

which(matieres == "anglais")
## [1] 3

b)

print(notes["anglais"])
## anglais 
##      10

c)

notes["anglais"] = 14
print(notes)
##        maths     français      anglais         phys informatique 
##           17           12           14           15           15
print(mean(notes))
## [1] 14.6

5.

names(notes) = NULL
print(notes)
## [1] 17 12 14 15 15

Exercice 4

1.

mat1 <- matrix(
  rep(c(1,2,3), 3),
  nrow=3,
  byrow=TRUE
)
print(mat1)
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    1    2    3
## [3,]    1    2    3

2.

mat2 = rbind(mat1, 4:6)
print(mat2)
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    1    2    3
## [3,]    1    2    3
## [4,]    4    5    6

3.

print(mat2 %*% mat1)
##      [,1] [,2] [,3]
## [1,]    6   12   18
## [2,]    6   12   18
## [3,]    6   12   18
## [4,]   15   30   45

4.

a)

print(
  rbind(
    "somme de la 2e ligne"=sum(mat2[2,]),
    "produit de la 3e colonne"=prod(mat2[,3])
  )
)
##                          [,1]
## somme de la 2e ligne        6
## produit de la 3e colonne  162

Exercice 5

1.

df = iris
mask = df$Petal.Length >= 5.0
print(sum(mask))
## [1] 46

2.

iris1 = df[1:50,]
print(iris1)
##    Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1           5.1         3.5          1.4         0.2  setosa
## 2           4.9         3.0          1.4         0.2  setosa
## 3           4.7         3.2          1.3         0.2  setosa
## 4           4.6         3.1          1.5         0.2  setosa
## 5           5.0         3.6          1.4         0.2  setosa
## 6           5.4         3.9          1.7         0.4  setosa
## 7           4.6         3.4          1.4         0.3  setosa
## 8           5.0         3.4          1.5         0.2  setosa
## 9           4.4         2.9          1.4         0.2  setosa
## 10          4.9         3.1          1.5         0.1  setosa
## 11          5.4         3.7          1.5         0.2  setosa
## 12          4.8         3.4          1.6         0.2  setosa
## 13          4.8         3.0          1.4         0.1  setosa
## 14          4.3         3.0          1.1         0.1  setosa
## 15          5.8         4.0          1.2         0.2  setosa
## 16          5.7         4.4          1.5         0.4  setosa
## 17          5.4         3.9          1.3         0.4  setosa
## 18          5.1         3.5          1.4         0.3  setosa
## 19          5.7         3.8          1.7         0.3  setosa
## 20          5.1         3.8          1.5         0.3  setosa
## 21          5.4         3.4          1.7         0.2  setosa
## 22          5.1         3.7          1.5         0.4  setosa
## 23          4.6         3.6          1.0         0.2  setosa
## 24          5.1         3.3          1.7         0.5  setosa
## 25          4.8         3.4          1.9         0.2  setosa
## 26          5.0         3.0          1.6         0.2  setosa
## 27          5.0         3.4          1.6         0.4  setosa
## 28          5.2         3.5          1.5         0.2  setosa
## 29          5.2         3.4          1.4         0.2  setosa
## 30          4.7         3.2          1.6         0.2  setosa
## 31          4.8         3.1          1.6         0.2  setosa
## 32          5.4         3.4          1.5         0.4  setosa
## 33          5.2         4.1          1.5         0.1  setosa
## 34          5.5         4.2          1.4         0.2  setosa
## 35          4.9         3.1          1.5         0.2  setosa
## 36          5.0         3.2          1.2         0.2  setosa
## 37          5.5         3.5          1.3         0.2  setosa
## 38          4.9         3.6          1.4         0.1  setosa
## 39          4.4         3.0          1.3         0.2  setosa
## 40          5.1         3.4          1.5         0.2  setosa
## 41          5.0         3.5          1.3         0.3  setosa
## 42          4.5         2.3          1.3         0.3  setosa
## 43          4.4         3.2          1.3         0.2  setosa
## 44          5.0         3.5          1.6         0.6  setosa
## 45          5.1         3.8          1.9         0.4  setosa
## 46          4.8         3.0          1.4         0.3  setosa
## 47          5.1         3.8          1.6         0.2  setosa
## 48          4.6         3.2          1.4         0.2  setosa
## 49          5.3         3.7          1.5         0.2  setosa
## 50          5.0         3.3          1.4         0.2  setosa

3.

mask = df$Species == "versicolor"
iris2 = df[mask,]
print(iris2)
##     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
## 51           7.0         3.2          4.7         1.4 versicolor
## 52           6.4         3.2          4.5         1.5 versicolor
## 53           6.9         3.1          4.9         1.5 versicolor
## 54           5.5         2.3          4.0         1.3 versicolor
## 55           6.5         2.8          4.6         1.5 versicolor
## 56           5.7         2.8          4.5         1.3 versicolor
## 57           6.3         3.3          4.7         1.6 versicolor
## 58           4.9         2.4          3.3         1.0 versicolor
## 59           6.6         2.9          4.6         1.3 versicolor
## 60           5.2         2.7          3.9         1.4 versicolor
## 61           5.0         2.0          3.5         1.0 versicolor
## 62           5.9         3.0          4.2         1.5 versicolor
## 63           6.0         2.2          4.0         1.0 versicolor
## 64           6.1         2.9          4.7         1.4 versicolor
## 65           5.6         2.9          3.6         1.3 versicolor
## 66           6.7         3.1          4.4         1.4 versicolor
## 67           5.6         3.0          4.5         1.5 versicolor
## 68           5.8         2.7          4.1         1.0 versicolor
## 69           6.2         2.2          4.5         1.5 versicolor
## 70           5.6         2.5          3.9         1.1 versicolor
## 71           5.9         3.2          4.8         1.8 versicolor
## 72           6.1         2.8          4.0         1.3 versicolor
## 73           6.3         2.5          4.9         1.5 versicolor
## 74           6.1         2.8          4.7         1.2 versicolor
## 75           6.4         2.9          4.3         1.3 versicolor
## 76           6.6         3.0          4.4         1.4 versicolor
## 77           6.8         2.8          4.8         1.4 versicolor
## 78           6.7         3.0          5.0         1.7 versicolor
## 79           6.0         2.9          4.5         1.5 versicolor
## 80           5.7         2.6          3.5         1.0 versicolor
## 81           5.5         2.4          3.8         1.1 versicolor
## 82           5.5         2.4          3.7         1.0 versicolor
## 83           5.8         2.7          3.9         1.2 versicolor
## 84           6.0         2.7          5.1         1.6 versicolor
## 85           5.4         3.0          4.5         1.5 versicolor
## 86           6.0         3.4          4.5         1.6 versicolor
## 87           6.7         3.1          4.7         1.5 versicolor
## 88           6.3         2.3          4.4         1.3 versicolor
## 89           5.6         3.0          4.1         1.3 versicolor
## 90           5.5         2.5          4.0         1.3 versicolor
## 91           5.5         2.6          4.4         1.2 versicolor
## 92           6.1         3.0          4.6         1.4 versicolor
## 93           5.8         2.6          4.0         1.2 versicolor
## 94           5.0         2.3          3.3         1.0 versicolor
## 95           5.6         2.7          4.2         1.3 versicolor
## 96           5.7         3.0          4.2         1.2 versicolor
## 97           5.7         2.9          4.2         1.3 versicolor
## 98           6.2         2.9          4.3         1.3 versicolor
## 99           5.1         2.5          3.0         1.1 versicolor
## 100          5.7         2.8          4.1         1.3 versicolor