3 votes

R: Comment diviser une chaîne de caractères et en conserver une partie?

J'ai beaucoup de chaînes comme indiqué ci-dessous.

> x=c("cat_1_2_3", "dog_2_6_3", "cow_2_8_6")
> x
[1] "cat_1_2_3" "dog_2_6_3" "cow_2_8_6"

Je voudrais séparer la chaîne tout en conservant la première partie, comme illustré ci-dessous.

"cat_1" "cat_2" "cat_3" "dog_2" "dog_6" "dog_3" "cow_2" "cow_8" "cow_6"

Des suggestions ?

2voto

akrun Points 148302

Nous pouvons utiliser sous

scan(text=sub("([a-z]+)_(\\d+)_(\\d+)_(\\d+)", "\\1_\\2,\\1_\\3,\\1_\\4",
          x), what ='', sep=",", quiet = TRUE)
#[1] "chat_1" "chat_2" "chat_3" "chien_2" "chien_6" "chien_3" "vache_2" "vache_8" "vache_6"

Ou une autre option est de séparer la chaîne avec

unlist(lapply(strsplit(x, "_"), function(x) paste(x[1], x[-1], sep="_")))

1voto

mpjdem Points 1319

Vous pourriez essayer de diviser la chaîne, puis de la recombiner en utilisant paste.

f <- function(x) {
    res <- strsplit(x,'_')[[1]]
    paste(res[1], res[2:4], sep='_')
}

x <- c("cat_1_2_3", "dog_2_6_3", "cow_2_8_6")

unlist(lapply(x, f))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X