2014-02-27 70 views

回答

4

這裏有一個可能性:

all.files <- list.files(rec=F) 
all.files[!file.info(all.files)$isdir] 

另一種選擇(與擴展,沒有那麼的通用文件格局,當然):

Sys.glob("*.*") 
+0

謝謝我認爲這是一些內置函數..我感到困惑的list.files功能,而不是最好的名稱選擇。 – lucacerone

+0

不客氣! – tonytonov

+0

歡樂谷!我一直在尋找這一點,並沒有在任何地方找到它,雖然它很明顯。謝謝 – Ali

12
setdiff(list.files(), list.dirs(recursive = FALSE, full.names = FALSE)) 

會做的伎倆。

2

另一種選擇:

Filter(function(x) file_test("-f", x), list.files()) 

而且如果你想通過庫functional獲得完整的功能,那麼你可以保存幾個按鍵:

Filter(Curry(file_test, "-f"), list.files()) 

這後一個轉變file_test成函數設置成「-f」的第一個參數,這基本上是我們在第一種方法一樣,但Curry做它更乾淨,因爲可悲的決定,有function關鍵字會很長(爲什麼不是f(x) {...} ???)

0

因此,我知道這些都是舊的,並且有一個被接受的答案,但我嘗試了其中的大部分,但都沒有真正起作用。

這裏是我的了:一個文件夾中的所有文件的

  1. 例子:

    files <- list.files("Training/Out/") 
    
  2. 輸出代碼:

    [1] "Filtered"   "Training_Chr01.txt" "Training_Chr02.txt" "Training_Chr03.txt" 
    [5] "Training_Chr04.txt" "Training_Chr05.txt" "Training_Chr06.txt" "Training_Chr07.txt" 
    [9] "Training_Chr08.txt" "Training_Chr09.txt" "Training_Chr10.txt" 
    

凡第一個[1]是目錄

  • 然此代碼來僅獲取文件:

    files <- list.files("Training/Out",recursive = TRUE) 
    
  • 有了這個輸出:

    [1] "Training_Chr01.txt" "Training_Chr02.txt" "Training_Chr03.txt" "Training_Chr04.txt" 
    [5] "Training_Chr05.txt" "Training_Chr06.txt" "Training_Chr07.txt" "Training_Chr08.txt" 
    [9] "Training_Chr09.txt" "Training_Chr10.txt" 
    
  • 這是或多或少幫助看着這個並且和我一樣困惑的人。

    +0

    如果您在「過濾」中有文件,那麼也會列出這些文件。這可能是也可能不是你想要的。 – thc

    相關問題