我有这样的路径../some/thing/foobar/foobar.happening,我想要character最后一个/和..
我意识到这对某些人来说很容易,但我还不熟悉正则表达式等。我也可能自己用strsplit.
提前致谢!
basename会给你最后一个斜线后的部分。然后,你可以在点上分割(你必须用两个来逃避\)
> (name <- basename("../some/thing/foobar/foobar.happening"))
[1] "foobar.happening"
> unlist(strsplit(name, "\\."))
[1] "foobar" "happening"
然后选择第一个元素
> unlist(strsplit(name, "\\."))[1]
[1] "foobar"
我看到您实际上要求的是除strsplit. 这是一个正则表达式
> sub(".*/([^/]+)\\..*", "\\1", "../some/thing/foobar/foobar.happening")
[1] "foobar"
.* / [^/](在括号内,^表示“不是”),一次或多次+。 \\. .*。 然后它只用括号内的东西替换它,[^/]+即正斜杠和点之间的所有内容。\\1表示第一组括号内的内容。(在这种情况下只有一组,但如果有第二组,我们可以用 引用它\\2)
您可以使用basename()和的组合file_path_sans_ext()。(后者来自于基本 R 发行版附带的工具包。)
path <- "../some/thing/foobar/foobar.happening"
library(tools)
file_path_sans_ext(basename(path))
# [1] "foobar"
## Or, if you don't want to load the tools package
tools::file_path_sans_ext(basename(path))
# [1] "foobar"