R 如何删除字符串中的所有字母,但如果最后一个字母是“quot;X";?

R 如何删除字符串中的所有字母,但如果最后一个字母是“quot;X";?,r,gsub,R,Gsub,带有ISBN的数据集包括一些带有字母的混乱数据集-因为ISBN中唯一有效的字母是最后一个位置的X,我想使用gsub删除所有其他字母-有什么建议吗 下面是一个简短的示例,说明了预期的结果: str1我们可以简单地使用gsub,在字符串的末尾($)加上“X”,以跳过,同时匹配一个或多个大写字母([A-Z]+),并将其替换为空白(”) 数据 str1另一个选项是删除所有非数字,同时在数字末尾保留X: gsub("((?<=\\d)X$)|\\D", "\\1&quo

带有ISBN的数据集包括一些带有字母的混乱数据集-因为ISBN中唯一有效的字母是最后一个位置的X,我想使用gsub删除所有其他字母-有什么建议吗

下面是一个简短的示例,说明了预期的结果:


str1我们可以简单地使用
gsub
,在字符串的末尾(
$
)加上“X”,以
跳过
,同时匹配一个或多个大写字母(
[A-Z]+
),并将其替换为空白(

数据
str1另一个选项是删除所有非数字,同时在数字末尾保留X:

gsub("((?<=\\d)X$)|\\D", "\\1", str1, perl = TRUE)
[1] "1234X" "1234"  ""      "1234" 
gsub((?)?
str1 <- c("1234X", "12X34", "XXXXX", "1234B")
gsub("((?<=\\d)X$)|\\D", "\\1", str1, perl = TRUE)
[1] "1234X" "1234"  ""      "1234"