从文件名列表中删除文件路径

时间:2015-10-08 20:20:33

标签: r

我有一个文件列表,所有文件名也都有文件路径。

   [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

我只想获取没有任何文件路径的文件名列表。我尝试了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

我想要做的就是提取第一个包含文件名和文件路径的列,并获取一个只包含文件名的文本文件(无文件路径)。

2 个答案:

答案 0 :(得分:4)

sub('.*/', '', x)
#[1] "A0017517.T" "A0017530.T" "A0017565.T" "A0017588.T"
#[5] "A0017620.T" "A0017697.T" "A0018123.T" "A0018124.T"

正则表达式通配符".*"将是贪婪的并且收集尽可能多的字符串,因为它可以将所有正斜杠收集到最后一个。

还有:

basename(x)
#[1] "A0017517.T" "A0017530.T" "A0017565.T" "A0017588.T"
#[5] "A0017620.T" "A0017697.T" "A0018123.T" "A0018124.T"

<强>更新

从您的评论中看来,您有一个数据框。方法不会改变。如果您有因素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"

答案 1 :(得分:1)

简单来说 files <- list.files("c:/temp/dat/work/")