une - str_extract r




Extraire une certaine sous-chaîne(adresse email) (3)

J'essaie d'en tirer un certain certain d'une variable qui ressemble à ceci:

v1 <- c("Persons Name <[email protected]>","person 2 <[email protected]>")

(cette variable a des centaines d'observations)

Je veux éventuellement faire une deuxième variable qui tire leur email pour donner cette sortie:

v2 <- c("[email protected]", "[email protected]")

Comment je ferais ça? Y a-t-il un certain paquet que je peux utiliser? Ou dois-je créer une fonction incorporant grep et substr ?


Celles-ci ressemblent à ce que R pourrait appeler une "personne". Il existe une fonction as.person() qui peut séparer l'adresse email. Par exemple

v1 <- c("Persons Name <[email protected]>","person 2 <[email protected]>")
unlist(as.person(v1)$email)
# [1] "[email protected]" "[email protected]"

Pour plus d'informations, consultez la page d'aide ?person .



Vous pouvez rechercher un motif qui ressemble à un email en utilisant regexpr . Si une correspondance est trouvée, extrayez la pièce appropriée à l'aide d'une substring . La position de départ et la longueur de correspondance sont fournies par regexpr

inds = regexpr(pattern = "<(.*@.*\\..*)>", v1)
ifelse(inds > 1,
       substring(v1, inds + 1, inds + attr(inds, "match.length") - 2),
       NA)
#[1] "[email protected]" "[email protected]"




substring