R-一个字符串和另一个字符串的字符之间的计数匹配,不替换
我有一个关键词(例如“绿色”)和一些文字(“我不喜欢他们,山姆,我是!”) 我想看看关键字('g','r','e','e','n')中有多少字符出现在文本中(以任何顺序)。 在本例中,答案是3-文本没有G或R,但有两个E和一个N 我的问题是,如果文本中的一个字符与关键字中的一个字符匹配,那么它就不能用于匹配关键字中的另一个字符 例如,如果我的关键字是“green”,那么“匹配字符”的数量仍然是3(一个N和两个E),因为文本中只有两个E,而不是3(匹配关键字中的第三个E) 我怎么能用R写这个?这只是在我记忆的边缘打勾——我觉得这是一个常见的问题,但措辞不同(有点像采样时没有替换,但“匹配时没有替换”?) 例如R-一个字符串和另一个字符串的字符之间的计数匹配,不替换,r,R,我有一个关键词(例如“绿色”)和一些文字(“我不喜欢他们,山姆,我是!”) 我想看看关键字('g','r','e','e','n')中有多少字符出现在文本中(以任何顺序)。 在本例中,答案是3-文本没有G或R,但有两个E和一个N 我的问题是,如果文本中的一个字符与关键字中的一个字符匹配,那么它就不能用于匹配关键字中的另一个字符 例如,如果我的关键字是“green”,那么“匹配字符”的数量仍然是3(一个N和两个E),因为文本中只有两个E,而不是3(匹配关键字中的第三个E) 我怎么能用R写这个?这只
关键字也许您正在寻找关键字的独特组成部分?尝试:
keyword <- unique(strsplit('greeen','')[[1]])
keyword函数pmatch()非常适合这一点。虽然在这里使用length是本能的,但length没有na.rm选项。因此,为了解决这个麻烦,使用sum(!is.na())
keyword <- unlist(strsplit('greeen', ''))
text <- unlist(strsplit('idonotlikethemsamiam', ''))
sum(!is.na(pmatch(keyword, text)))
# [1] 3
keyword2 <- unlist(strsplit("red", ''))
sum(!is.na(pmatch(keyword2, text)))
# [1] 2
关键字不,我不是。我试图找到出现在文本中的关键字中的字符数,如果文本中的一个字符与关键字中的一个匹配,则不能使用它来匹配关键字中的另一个字符。我想要的输出是数字,而不是字符向量。啊哈!我花了很长时间尝试match
和charmatch
,但没有注意到pmatch
不允许重复(这正是我想要的)。非常感谢@Mathematic.coffee pmatch确实允许重复,但它的默认值为false。是的,对不起,我的意思是“没有注意到pmatch
有不允许重复的选项”取消列出可以避免字符串向量而不是子集[[1]
@BrandonBertelsen谢谢,我只是用问题中的例子来获取我的数据。现在编辑。
keyword <- unlist(strsplit('greeen', ''))
text <- unlist(strsplit('idonotlikethemsamiam', ''))
sum(!is.na(pmatch(keyword, text)))
# [1] 3
keyword2 <- unlist(strsplit("red", ''))
sum(!is.na(pmatch(keyword2, text)))
# [1] 2