提取两个字符串之间不同的不同字符

Ric*_*cky 8 string r

我有两个字符串a <- "AERRRTX"; b <- "TRRA".

我想提取a未使用的字符b,即"ERX"

我试图在回答这两个字符串之间不同提取字符,它使用setdiff.它返回"EX",因为b它有"R" setdiff并将消除所有三个"R" a.我的目标是将每个角色视为不同的角色,因此只a应消除三个R中的两个角色.

有关我可以使用什么而不是setdiff其他方法来实现我的输出的任何建议?

Ron*_*hah 11

一种不同的方法pmatch,

a1 <- unlist(strsplit(a, ""))
b1 <- unlist(strsplit(b, "")) 

a1[!1:length(a1) %in% pmatch(b1, a1)]

 #[1] "E" "R" "X"
Run Code Online (Sandbox Code Playgroud)

另一个例子,

a <- "Ronak";b<-"Shah"

a1 <- unlist(strsplit(a, ""))
b1 <- unlist(strsplit(b, ""))
a1[!1:length(a1) %in% pmatch(b1, a1)]

# [1] "R" "o" "n" "k"
Run Code Online (Sandbox Code Playgroud)

  • 不错的选择.你可以用`a1 [-pmatch(b1,a1)]`替换你的第三行.另外,注意"pmatch"的"duplicates.ok = FALSE"参数会很有用,它将其行为区分为"匹配". (2认同)