我有這樣的路徑../some/thing/foobar/foobar.happening
,我想要character
字符串在最後的/
和.
之間。路徑變量的子字符串
我意識到這對於一些人來說很容易,但我還不熟悉正則表達式等。 我也可能可以自己做到這一點strsplit
,但我正在尋找一個優雅的單線程,如果可能。
在此先感謝!
我有這樣的路徑../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()
的組合。 (後者來自工具包,它附帶的基本科研分佈。)
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"
doh!幾個星期前我剛剛推薦了這個功能,但今天我想不起來。 – GSee
用於'file_path_sans_ext'的+1。我知道這必須在某個地方。儘管如此,這真是一個可怕的名字。 –
這是值得快速看看函數def,看到它的一些額外的東西,它提交文件的名字...... –
相關:http://stackoverflow.com/questions/14173754/splitting-a-file-name – GSee