仅在列表中保留最新版本的元素

时间:2017-10-23 20:44:13

标签: r

我有这样的矢量:

x = c("123-1", "123-2", "123-3", "222-1", "222-2", "333-1")

但它非常大。

我想只保留每个号码的最新版本。所以我想要输出如下:

z=c("123-3", "222-2", "333-1")

我怎么能这样做?

2 个答案:

答案 0 :(得分:6)

假设您的x实际上是字符串

x = c("123-1", "123-2", "123-3", "222-1", "222-2", "333-1")

x[!duplicated(sapply(strsplit(x, "-"), '[', 1), fromLast = TRUE)]
#[1] "123-3" "222-2" "333-1"

答案 1 :(得分:1)

目前尚不清楚字符串是否始终有序。如果没有,那么我们可能需要order

unname(tapply(x, sub("-.*", ".", x), FUN = function(y) 
                           y[order(-as.numeric(sub("-", ".", y)))][1]))
#[1] "123-3" "222-2" "333-1"