比较并获取R中两个对象之间不同的字符串

时间:2017-10-23 20:12:16

标签: r string compare string-comparison

我想在R中比较两个具有5个字符串的对象。为简单起见,我们可以考虑旧的等级和新的等级。输入将是:

new <- c("XX1","XX2", "XX3", "XX4", "XX4")
old <- c("XX1","XX5", "XX6", "XX3", "XX4")

这将是预期的输出:

Keep <- c("XX1", "XX3", "XX4")
Get <- c("XX2", "XX4")
Rid <- c("XX5", "XX6")

为清楚起见,“XX1”,“XX3”和“XX4”保留在新的等级中。但是,“XX4”现在出现两次,并在Get对象中弹出“XX2”。 Rid不属于新等级,而是属于旧等级。

我可以使用

提取Rid
library(Hmisc)
Rid <- old[old%nin%new]   

然而,当字符串出现多次像“XX4”时,我发现很难提取(即Get)。我很乐意提出任何建议。

1 个答案:

答案 0 :(得分:3)

可以使用包vecsets的功能

#Keep
vecsets::vintersect(new, old)
#[1] "XX1" "XX3" "XX4"

#Get
vecsets::vsetdiff(new, old)
#[1] "XX2" "XX4"

#Rid
vecsets::vsetdiff(old, new)
#[1] "XX5" "XX6"