r 识别最后一个定界符之前的 return 字符串

r identify and return string prior to last delimiter

我在 Whosebug 上发现了类似的问题,但不是我要找的。我有一个像这样的向量:

x <- c('w/x/y/z', 'x/y/z', 'y/z')

我想要 return 一个向量,它给我在最后一个 / 之前和任何其他 / 之前的字符串(在我的真实数据中,一个比 1 个字母更长的字符串)。因此,此输出将是:

y <- c('y', 'y', 'y')

我尝试使用 strsplit 和 tail 来按 / 和 return 最后 2 项进行拆分,但不知道如何只获取倒数第二项。

y <- sapply(lapply(spl, tail,2), paste, collapse = '/')
y
[1] "y/z" "y/z" "y/z"
ifelse(grepl("/", x), sapply(strsplit(x, "/"), function(S) tail(S, 2)[1]), NA)
#[1] "y" "y" "y"