简体   繁体   中英

Extract strings with SOME unique characters in R

Here is my pb: I have 9 strings, all unique but with characters in common. I want to extract among them the ones that have some unique characters, not present in any other string. I think that a loop which compare each string with the others is a good option but I don't know which function to use.I can't use the unique() function as all the string are unique.

Here are the strings:

[1] ".contexte d'enseignement""
[2] ".contexte d'enseignement.cohérence avec le niveau des élèves""
[3] ".contexte d'enseignement.contraintes pratiques""
[4] ".contexte d'enseignement.contraintes pratiques.contrainte de temps""
[5] ".contexte d'enseignement.contraintes pratiques.contrainte matérielle""
[6] ".contexte d'enseignement.contraintes pratiques.faisabilité par rapport à la classe""
[7] ".contexte d'enseignement.objectifs de l'Education Nationale""
[8] ".contexte d'enseignement.objectifs de l'Education Nationale.adéquation avec le programme"" [9] ".contexte d'enseignement.objectifs de l'Education Nationale.progression de la difficulté""

And this is the result I'm waiting for:

[1] ".contexte d'enseignement.cohérence avec le niveau des élèves""
[2] ".contexte d'enseignement.contraintes pratiques.contrainte de temps""
[3] ".contexte d'enseignement.contraintes pratiques.contrainte matérielle""
[4] ".contexte d'enseignement.contraintes pratiques.faisabilité par rapport à la classe""
[5] ".contexte d'enseignement.objectifs de l'Education Nationale.adéquation avec le programme"" [6] ".contexte d'enseignement.objectifs de l'Education Nationale.progression de la difficulté""

Thank's for your help !

You could do it like this with sapply() . In the code below, sapply() is used to loop over all of the observation numbers in the string. It used str_detect() from the stringr package to identify whether the ith value of str in its entirety is in any of the other values of str . Wrapping the output from str_detect() in any() will evaluate to TRUE if the ith string is in any of the other strings. Then you can use that result to subset the string to create the desired output.

str <- c(".contexte d\'enseignement",
".contexte d\'enseignement.cohérence avec le niveau des élèves",
".contexte d\'enseignement.contraintes pratiques",
".contexte d\'enseignement.contraintes pratiques.contrainte de temps",
".contexte d\'enseignement.contraintes pratiques.contrainte matérielle",
".contexte d\'enseignement.contraintes pratiques.faisabilité par rapport à la classe",
".contexte d\'enseignement.objectifs de l\'Education Nationale",
".contexte d\'enseignement.objectifs de l\'Education Nationale.adéquation avec le programme",
".contexte d\'enseignement.objectifs de l\'Education Nationale.progression de la difficulté")

library(stringr)
w <- sapply(1:length(str), 
            function(x)any(str_detect(str[-x], str[x])))
str[-which(w)]
# [1] ".contexte d'enseignement.cohérence avec le niveau des élèves"                            
# [2] ".contexte d'enseignement.contraintes pratiques.contrainte de temps"                      
# [3] ".contexte d'enseignement.contraintes pratiques.contrainte matérielle"                    
# [4] ".contexte d'enseignement.contraintes pratiques.faisabilité par rapport à la classe"      
# [5] ".contexte d'enseignement.objectifs de l'Education Nationale.adéquation avec le programme"
# [6] ".contexte d'enseignement.objectifs de l'Education Nationale.progression de la difficulté"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM