Exercice 1

Dans le dataframe ‘x’, retirez les lignes qui comportent la valeur ‘0’

x1 <- c(0,2,1)
x2 <- c(2,3,0)
x3 <- c(5,8,7)
x <- data.frame(x1,x2,x3)
x
##   x1 x2 x3
## 1  0  2  5
## 2  2  3  8
## 3  1  0  7

Solution

y <- x[!(x$x1 == 0 | x$x2 == 0 | x$x3 == 0),]
y
##   x1 x2 x3
## 2  2  3  8

Exercice 2

Le vecteur ‘x’ comporte 4 nombres. Créer un vecteur qui prend la valeur ‘TRUE’ si le nombre comporte le chiffre 1, ‘FALSE’ sinon.

x <- c(145,19,237,612)
x
## [1] 145  19 237 612

Solution

Logique :

Transformer chaque élément de x en ‘character’ avec as.character

# exemple
as.character(x[1])
## [1] "145"

Séparer les chiffres de chaque élément avec strsplit

# exemple
strsplit(as.character(x[1]),"")
## [[1]]
## [1] "1" "4" "5"
# remarque
strsplit(as.character(x[1]),"")[[1]]
## [1] "1" "4" "5"

Chercher le chiffre 1 parmi les chiffres séparés avec %in%

'1' %in% strsplit(as.character(x[1]),"")[[1]]
## [1] TRUE
# on crée une nouvelle variable qui ne comporte que des '0' (character)
present_absent <- rep("0", length(x))

# on réalise la boucle
for (i in 1:length(x)) {
  present_absent[i] <- '1' %in% strsplit(as.character(x[i]),"")[[1]]
}

data.frame(x, present_absent)
##     x present_absent
## 1 145           TRUE
## 2  19           TRUE
## 3 237          FALSE
## 4 612           TRUE