我有一个文件列表,所有文件名也都有文件路径。
[1] c:/temp/dat/work/A0017517.T c:/temp/dat/work/A0017530.T
[3] c:/temp/dat/work/A0017565.T c:/temp/dat/work/A0017588.T
[5] c:/temp/dat/work/A0017620.T c:/temp/dat/work/A0017697.T
[7] c:/temp/dat/work/A0018123.T c:/temp/dat/work/A0018124.T
Run Code Online (Sandbox Code Playgroud)
我只想获取没有任何文件路径的文件名列表。我尝试了 basename() 但我不知道如何在列表中使用它。
在此先感谢您的帮助!
由于某种原因,当我尝试发表评论时,一切都搞砸了-我有一个 csv 文件,如下所示-
"","size","isdir","mode","mtime"
"C/temp/A0017517.T",122099,FALSE,666,2015-10-08 13:39:26
"C/temp/A0017530.T",122706,FALSE,666,2015-10-08 13:39:26
"C/temp/A0017565.T",76613,FALSE,666,2015-10-01 20:37:24
"C/temp/A0017588.T",162651,FALSE,666,2015-10-08 13:39:28
Run Code Online (Sandbox Code Playgroud)
我想要做的就是提取具有文件名和文件路径的第一列,并获取仅包含文件名(无文件路径)的文本文件。
sub('.*/', '', x)
#[1] "A0017517.T" "A0017530.T" "A0017565.T" "A0017588.T"
#[5] "A0017620.T" "A0017697.T" "A0018123.T" "A0018124.T"
Run Code Online (Sandbox Code Playgroud)
正则表达式通配符".*"将是贪婪的,并会收集尽可能多的字符串,以接收到最后一个斜杠的所有正斜杠。
还有:
basename(x)
#[1] "A0017517.T" "A0017530.T" "A0017565.T" "A0017588.T"
#[5] "A0017620.T" "A0017697.T" "A0018123.T" "A0018124.T"
Run Code Online (Sandbox Code Playgroud)
更新
从您的评论看来您有一个数据框。方法没有改变。以防万一您有因素basename需要您将向量强制为as.character。
df
file size isdir
1 c:/temp/dat/work/A0017517.T 93 TRUE
2 c:/temp/dat/work/A0017530.T 60 TRUE
3 c:/temp/dat/work/A0017565.T 55 FALSE
4 c:/temp/dat/work/A0017588.T 52 TRUE
5 c:/temp/dat/work/A0017620.T 95 TRUE
6 c:/temp/dat/work/A0017697.T 49 FALSE
7 c:/temp/dat/work/A0018123.T 65 TRUE
8 c:/temp/dat/work/A0018124.T 56 FALSE
basename(as.character(df[,1]))
[1] "A0017517.T" "A0017530.T" "A0017565.T" "A0017588.T"
[5] "A0017620.T" "A0017697.T" "A0018123.T" "A0018124.T"
#or
sub('.*/', '', df[,1])
[1] "A0017517.T" "A0017530.T" "A0017565.T" "A0017588.T"
[5] "A0017620.T" "A0017697.T" "A0018123.T" "A0018124.T"
Run Code Online (Sandbox Code Playgroud)