24 votes

Fractionnement de la chaîne avec des conditions dans R

J'ai ceci mystring avec le délimiteur "_" . La condition ici est la suivante : s'il y a deux délimiteurs ou plus, je veux diviser au deuxième délimiteur et s'il n'y a qu'un seul délimiteur, je veux diviser à l'endroit où se trouve le premier délimiteur. ".Recal" et obtenir le result comme indiqué ci-dessous.

mystring<-c("MODY_60.2.ReCal.sort.bam","MODY_116.21_C4U.ReCal.sort.bam","MODY_116.3_C2RX-1-10.ReCal.sort.bam","MODY_116.4.ReCal.sort.bam")

résultat

"MODY_60.2"  "MODY_116.21" "MODY_116.3"  "MODY_116.4"

2voto

Mostafa Rezaei Points 126

Un peu plus long, mais nécessite moins de connaissances en expressions régulières :

library(stringr)
indx <- str_locate_all(mystring, "_")

for (i in seq_along(indx)) {
  if (nrow(indx[[i]]) == 1) {
    mystring[i] <- strsplit(mystring[i], ".ReCal")[[1]][1]
  } else {
    mystring[i] <- substr(mystring[i], start = 1, stop = indx[[i]][2] - 1)
  }
}

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