将文件名拆分为名称,扩展名

Lay*_*yla 37 filenames split substring r

我有这样一个文件的名称:name1.csv我想提取这个字符串的两个子串.一个存储name1一个变量,另一个存储扩展csv,而不存在另一个变量中的点.

我一直在寻找是否有类似indexOfJava 的功能允许进行那种操作,但我还没有找到任何东西.

有帮助吗?

Dir*_*tel 63

用途strsplit:

R> strsplit("name1.csv", "\\.")[[1]]
[1] "name1" "csv"  
R> 
Run Code Online (Sandbox Code Playgroud)

请注意,a)需要转义点(因为它是正则表达式的元字符)和b)处理strsplit()返回列表的事实,该列表通常只有第一个元素是感兴趣的.

更通用的解决方案涉及正则表达式,您可以在其中提取匹配项.

对于文件名的特殊情况,您还有:

R> library(tools)   # unless already loaded, comes with base R
R> file_ext("name1.csv")
[1] "csv"
R> 
Run Code Online (Sandbox Code Playgroud)

R> file_path_sans_ext("name1.csv")
[1] "name1"
R> 
Run Code Online (Sandbox Code Playgroud)

因为这些是如此常见的任务(参见basenameshell等).

  • 同意,我也在内部越来越多地使用它。但请注意,答案也是4 1/2岁:) (2认同)

Ada*_*zyk 7

用途strsplit():

http://stat.ethz.ch/R-manual/R-devel/library/base/html/strsplit.html

例:

> strsplit('name1.csv', '[.]')[[1]]
[1] "name1" "csv"  
Run Code Online (Sandbox Code Playgroud)

请注意,第二个参数是正则表达式,这就是为什么你不能只传递单个点(它将被解释为"任何字符").