2017-06-12 59 views
1

我有一個文本格式的文件名列表,意思是文件名而不是文件夾中的物理文件。例如....將文件夾中的文件名與R中的文件名列表進行匹配

ECGVW103899_wholecaseRRiQTi.rr 
    ECGVW104077_wholecaseRRiQTi.rr 
    ECGVW104081_wholecaseRRiQTi.rr 
    ECGVW104121_wholecaseRRiQTi.rr 
    ECGVW104182_wholecaseRRiQTi.rr 
    . 
    . 
    . 

我有一個文件夾列表的文件。這些文件包括上面列出的列表中的名稱(以及一些其他文件)。我需要通過將文件夾中的其他文件移動到單獨的文件夾來分隔它們。有什麼建議麼?

+0

查看哪些文件不在您的列表中很容易使用索引。至於移動文件,請參閱[這裏](http://www.talkstats.com/showthread.php/21889-Move-files-from-one-folder-to-another-using-R) – RobertMc

回答

1

像這樣的東西可能會給你你想要的結果。

files.to.keep <- c("ECGVW103899_wholecaseRRiQTi.rr", 
        "ECGVW104077_wholecaseRRiQTi.rr", 
        "ECGVW104081_wholecaseRRiQTi.rr", 
        "ECGVW104121_wholecaseRRiQTi.rr", 
        "ECGVW104182_wholecaseRRiQTi.rr") 

source.path <- # Path to file source folder 
destination.path <- # Path to file destination folder 

# Create destination folder if it does not exist 
ifelse(!dir.exists(destination.path), dir.create(destination.path), FALSE) 

# Get list of files in source folder 
filenames <- list.files(source.path) 

# Move files that are not in files.to.keep to the destination folder 
lapply(filenames, function(x) 
        if(!(x %in% files.to.keep)) 
         {file.rename(from = file.path(source.path,x),to = file.path(destination.path,x))}) 
+0

我已經創建了一個清空目標文件夾以移動不匹配的其他文件。在這種情況下,ifelse線的目的是什麼? – DaphFab

+0

此外,代碼不會將文件移動到目標文件夾。但它給了我一個輸出,如[[1]] [1] FALSE [[2]] [1] FALSE – DaphFab

+0

這就是爲了防止錯誤的檢查。它使它可以自動創建目標文件夾,如果它不存在以防止代碼被破壞。 –

相關問題