Petit exemple:
Code : Tout sélectionner
> tmp <- data.frame(Maladie = c("Infarctus", "Hépatite", "Cancer du poumon"),
+ FR = c("tabac, alcool", "alcool", "tabac"))
> tmp
Maladie FR
1 Infarctus tabac, alcool
2 Hépatite alcool
3 Cancer du poumon tabac
> pos <- regexpr(pattern = "alcool", text = as.character(tmp$FR))
> pos
[1] 8 1 -1
attr(,"match.length")
[1] 6 6 -1
> tmp[pos > 0, ]
Maladie FR
1 Infarctus tabac, alcool
2 Hépatite alcool
NB:
* bien lire l'aide de regexpr, que je trouve assez obscure pour les gens qui n'utilisent pas (souvent) le logiciel Perl.
* l'argument text doit recevoir un vecteur de chaînes de caractères. Dans un data.frame, ces vecteurs sont transformés automatiquement en facteurs. Si l'on n'y prend pas garde, cela peut donner de mauvaises surprises:
Code : Tout sélectionner
> pos <- regexpr(pattern = "alcool", text = tmp$FR)
> pos
[1] -1 -1 -1
attr(,"match.length")
[1] -1 -1 -1
> tmp[pos > 0, ]
[1] Maladie FR
<0 rows> (or 0-length row.names)
Cordialement,
Renaud