比较并获取 R 中两个对象之间不同的字符串
Compare and obtain strings that differ between two objects in R
我想在 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
)。我很乐意提出任何建议。
包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"
我想在 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
)。我很乐意提出任何建议。
包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"