简体   繁体   English

在 R 中提取具有一些独特字符的字符串

[英]Extract strings with SOME unique characters in R

Here is my pb: I have 9 strings, all unique but with characters in common.这是我的 pb:我有 9 个字符串,所有字符串都是唯一的,但有共同的字符。 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.我认为将每个字符串与其他字符串进行比较的循环是一个不错的选择,但我不知道要使用哪个 function。我不能使用 unique() function,因为所有字符串都是唯一的。

Here are the strings:这是字符串:

[1] ".contexte d'enseignement"" [1] ".contexte d'enseignement""
[2] ".contexte d'enseignement.cohérence avec le niveau des élèves"" [2] “.contexte d'enseignement.cohérence avec le niveau des élèves””
[3] ".contexte d'enseignement.contraintes pratiques"" [3] “.contexte d'enseignement.contraintes pratiques””
[4] ".contexte d'enseignement.contraintes pratiques.contrainte de temps"" [4] “.contexte d'enseignement.contraintes pratiques.contrainte de temps””
[5] ".contexte d'enseignement.contraintes pratiques.contrainte matérielle"" [5] “.contexte d'enseignement.contraintes pratiques.contrainte matérielle””
[6] ".contexte d'enseignement.contraintes pratiques.faisabilité par rapport à la classe"" [6] “.contexte d'enseignement.contraintes pratiques.faisabilité par rapport à la classe””
[7] ".contexte d'enseignement.objectifs de l'Education Nationale"" [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é"" [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"" [1] “.contexte d'enseignement.cohérence avec le niveau des élèves””
[2] ".contexte d'enseignement.contraintes pratiques.contrainte de temps"" [2] “.contexte d'enseignement.contraintes pratiques.contrainte de temps””
[3] ".contexte d'enseignement.contraintes pratiques.contrainte matérielle"" [3] “.contexte d'enseignement.contraintes pratiques.contrainte matérielle””
[4] ".contexte d'enseignement.contraintes pratiques.faisabilité par rapport à la classe"" [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é"" [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() .您可以使用sapply()这样做。 In the code below, sapply() is used to loop over all of the observation numbers in the string.在下面的代码中, sapply()用于循环遍历字符串中的所有观察值。 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 .它使用 stringr package 中的stringr str_detect()来识别str的第 i 个值是否在str的任何其他值中。 Wrapping the output from str_detect() in any() will evaluate to TRUE if the ith string is in any of the other strings.如果第 i 个字符串在任何其他字符串中,则将来自str_detect()的 output 包装在any()中将评估为TRUE Then you can use that result to subset the string to create the desired output.然后您可以使用该结果对字符串进行子集化以创建所需的 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é"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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