In R如何獲取文件夾中的文件列表,但不是目錄中的文件列表?R:獲取文件列表但不包括目錄
我一直在使用dir()
,list.files()
,list.dirs()
有不同的選擇, 嘗試,但沒有人似乎工作。
In R如何獲取文件夾中的文件列表,但不是目錄中的文件列表?R:獲取文件列表但不包括目錄
我一直在使用dir()
,list.files()
,list.dirs()
有不同的選擇, 嘗試,但沒有人似乎工作。
這裏有一個可能性:
all.files <- list.files(rec=F)
all.files[!file.info(all.files)$isdir]
另一種選擇(與擴展,沒有那麼的通用文件格局,當然):
Sys.glob("*.*")
setdiff(list.files(), list.dirs(recursive = FALSE, full.names = FALSE))
會做的伎倆。
另一種選擇:
Filter(function(x) file_test("-f", x), list.files())
而且如果你想通過庫functional
獲得完整的功能,那麼你可以保存幾個按鍵:
Filter(Curry(file_test, "-f"), list.files())
這後一個轉變file_test
成函數設置成「-f」的第一個參數,這基本上是我們在第一種方法一樣,但Curry
做它更乾淨,因爲可悲的決定,有function
關鍵字會很長(爲什麼不是f(x) {...}
???)
因此,我知道這些都是舊的,並且有一個被接受的答案,但我嘗試了其中的大部分,但都沒有真正起作用。
這裏是我的了:一個文件夾中的所有文件的
例子:
files <- list.files("Training/Out/")
輸出代碼:
[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"
這是或多或少幫助看着這個並且和我一樣困惑的人。
如果您在「過濾」中有文件,那麼也會列出這些文件。這可能是也可能不是你想要的。 – thc
謝謝我認爲這是一些內置函數..我感到困惑的list.files功能,而不是最好的名稱選擇。 – lucacerone
不客氣! – tonytonov
歡樂谷!我一直在尋找這一點,並沒有在任何地方找到它,雖然它很明顯。謝謝 – Ali