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é"