gsub 的否定 | 替换特定向量中除字符串之外的所有内容

ben*_*ett 6 regex r negation gsub

我有一个字符串向量:

ve <- c("N","A","A","A","N","ANN","NA","NFNFNAA","23","N","A","NN", "parnot", "important", "notall")
Run Code Online (Sandbox Code Playgroud)

我只想在此向量中保留三个可能的值:NANA

因此,我想替换任何不是NA的元素NA

我怎样才能实现这个目标?

我已经尝试过以下方法:

gsub(ve, pattern = '[^NA]+', replacement = 'NA')
gsub(ve, pattern = '[^N|^A]+', replacement = 'NA')
Run Code Online (Sandbox Code Playgroud)

但这些效果不佳,因为它们将每个字符串中的每个“A”或“N”实例替换为 NA。所以在某些情况下我最终会得到NANANANANANA, 而不是简单地NA.

akr*_*run 3

如果我们正在寻找固定匹配,则使用%in%否定!并将其分配给'NA'

ve[!ve %in% c("A", "N", "NA")] <- 'NA'
Run Code Online (Sandbox Code Playgroud)

请注意,在 中R,缺失值未加引号NA且未加引号。希望它是一个不同的类别,并建议将类别名称更改为不同的名称,以避免将来在解析时出现混淆