R语言中使用match函数匹配字符位置返回NA的原因排查
问题原因及解决方法
输入类型不匹配
strsplit()函数拆分字符串后返回的是列表,但match()只接受向量作为第一个匹配参数。直接用列表去匹配向量,就会返回NA。解决方式是用unlist()把列表转成向量。
存在未匹配的字符
原句子拆分后包含空格,但你的alphabet_S里没有空格字符,这部分空格在匹配时自然找不到对应位置,也会返回NA。如果需要匹配空格,得把它加入alphabet_S。
修正后的代码示例
sentence <- c("soccer is difficult") sentence <- tolower(sentence) # 将strsplit返回的列表转为向量 sentence2 <- unlist(strsplit(sentence, "")) alphabet_S <- c("a","b","c","d","e","f","g","h","i","j", "k","l","m","n","o","p","q","r","s","t", "u","v","w","x","y","z","next", " ") # 添加空格 match(sentence2, alphabet_S)
内容的提问来源于stack exchange,提问作者lililililililili
相关产品推荐
相关产品推荐

