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
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