Je voudrais diviser la chaîne suivante par ses périodes. J'ai essayé strsplit()
avec "."
dans l'argument split
, mais n'a pas obtenu le résultat souhaité.
s <- "I.want.to.split"
strsplit(s, ".")
[[1]]
[1] "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
La sortie que je veux est de diviser s
en 4 éléments dans une liste, comme suit.
[[1]]
[1] "I" "want" "to" "split"
Que devrais-je faire?
Lorsque vous utilisez une expression régulière dans l'argument split
de strsplit()
, vous devez échapper au .
Avec \\.
, Ou utiliser une charclasse [.]
. Sinon, vous utilisez .
Comme sa signification de caractère spécial, "tout caractère unique".
s <- "I.want.to.split"
strsplit(s, "[.]")
# [[1]]
# [1] "I" "want" "to" "split"
Mais la méthode la plus efficace consiste à utiliser l'argument fixed
dans strsplit()
. L'utilisation de cet argument contournera le moteur d'expression régulière et recherchera une correspondance exacte de "."
.
strsplit(s, ".", fixed = TRUE)
# [[1]]
# [1] "I" "want" "to" "split"
Et bien sûr, vous pouvez voir help(strsplit)
pour en savoir plus.
Vous devez soit placer le point .
à l'intérieur d'un classe de caractères ou précédez-le de deux barres obliques inverses pour lui échapper puisque le point est un caractère de signification spéciale en regex signifiant "correspondre à n'importe quel caractère unique (sauf la nouvelle ligne ) "
s <- 'I.want.to.split'
strsplit(s, '\\.')
# [[1]]
# [1] "I" "want" "to" "split"
Outre strsplit()
, vous pouvez également utiliser scan()
. Essayer:
scan(what = "", text = s, sep = ".")
# Read 4 items
# [1] "I" "want" "to" "split"