【问题标题】:r identify and return string prior to last delimiterr 在最后一个分隔符之前识别并返回字符串
【发布时间】:2018-01-05 17:56:41
【问题描述】:

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

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

我想返回一个向量,它为我提供最后一个 / 之前和任何其他 / 之前的字符串(在我的真实数据中,比 1 个字母更长的字符串)。所以,这个输出将是:

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

我曾尝试使用 strsplit 和 tail 以 / 分割并返回最后 2 项,但不知道如何只获取倒数第二项。

y <- sapply(lapply(spl, tail,2), paste, collapse = '/')
y
[1] "y/z" "y/z" "y/z"

【问题讨论】:

  • 是的,我想选择最后一个 / 符号和它之前的 / 之间的字符串。但是,并不总是有 / 优先(如第三个字符串,'y/z')。

标签: r regex string delimiter


【解决方案1】:
ifelse(grepl("/", x), sapply(strsplit(x, "/"), function(S) tail(S, 2)[1]), NA)
#[1] "y" "y" "y"

【讨论】:

  • 谢谢,我明白了!我的问题实际上是 x 列是一个因素,而不是一个字符。
猜你喜欢
  • 2017-04-23
  • 2020-09-13
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
  • 2012-02-06
  • 2016-03-13
相关资源
最近更新 更多