2015-10-08 106 views
1

我有一個文件列表,並且所有文件名都有文件路徑。從文件名列表中刪除文件路徑

[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(),但我不知道如何在列表中使用它。
在此先感謝您的幫助!

出於某種原因,一切都搞砸了,當我嘗試comment- 我有一個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 

所有我想要做的是提取沿着具有文件名的第一列與文件路徑並獲得一個只有文件名(沒有文件路徑)的文本文件。

回答

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

我要說,子( 「C:/溫度/ DAT /工作/ svrimp /」, 「」,x),但是使用正則表達式的好如果OP理解他們。 – user1945827

+0

@ user1945827你想要任何路徑名稱的東西 –

+0

@Pierre Lafortune-我試過了,但它給了我[1]「1:2777」。我是R新手,所以我可能在其他地方犯了一個錯誤,但我不知道在哪裏。 – asmi

1

什麼簡單 files <- list.files("c:/temp/dat/work/")

+0

您假定文件在本地硬盤上 –