在R中提取具有某些唯一字符的字符串

问题描述

这是我的铅: 我有9个字符串,所有字符串都是唯一的,但有共同的字符。我想从中提取那些具有某些唯一字符的字符串,这些字符不存在于其他任何字符串中。 我认为将每个字符串与其他字符串进行比较的循环是一个不错的选择,但是我不知道要使用哪个函数。由于所有字符串都是唯一的,因此我无法使用unique()函数

以下是字符串:

[1]“ .contexte d'enseignement”“
[2]“ .contexte d'enseignement.cohérenceavec 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.contraintematérielle”“
[6]“ .contexte d'enseignement.contraintespratiques.faisabilitépar happortàla classe”“
[7]“ .contexte d'enseignement.objectifs de l'Education Nationale””
[8]“国家教育。语境保护目标课程。” [9]“ .contexte d'enseignement.objectifs de l'Education Nationale.progression de lahardé””

这就是我等待的结果:

[1]“ .contexte d'enseignement.cohérenceavec le niveau desélèves”“
[2]“ .contexte d'enseignement.contraintes pratiques.contrainte de temps”“
[3]“ .contexte d'enseignement.contraintes pratiques.contraintematérielle”“
[4]“ .contexte d'enseignement.contraintespratiques.faisabilitépar happortàla classe”“
[5]“ .contexte d'enseignement.objectifs de l'EducationNationale.adéquationavec le program”“ [6]“ .contexte d'enseignement.objectifs de l'Education Nationale.progression de lahardé””

谢谢您的帮助!

解决方法

您可以使用sapply()来做到这一点。在下面的代码中,sapply()用于遍历字符串中的所有观察编号。它使用str_detect()包中的stringr来确定str的第i个值是否整体上是str的其他任何值。如果第ith个字符串位于其他任何字符串中,则将str_detect()any()的输出包装起来将得出TRUE。然后,您可以使用该结果对字符串进行子集创建所需的输出。

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