【问题标题】:Compare and obtain strings that differ between two objects in R比较并获取 R 中两个对象之间不同的字符串
【发布时间】:2017-10-23 20:12:16
【问题描述】:

我想在 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)。我很乐意提供任何建议。

【问题讨论】:

  • 还有Get &lt;- c(setdiff(new, old), new[duplicated(new)])

标签: r string compare string-comparison


【解决方案1】:

可以使用包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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多