2014-09-26 136 views
0

我想將「.txt」文件擴展名添加到沒有當前擴展名的多個文件。我可以創建使用下面的代碼包含文件路徑的載體,但我不知道如何添加名爲「.txt」文件擴展名:將R中的文件擴展名添加到多個文件

startingDir <-"/myDirectory" 
filez<-list.files(startingDir) 
head(filez) 
[1] "/myDirectory/File1" 
[2] "/myDirectory/File2" 
[3] "/myDirectory/File3" 
+3

'file.rename(filez,<取其答案下面>)' – baptiste 2014-09-26 23:43:28

+0

當我運行: 'startingDir < - 「/ mydirectory中」 filez <-list.files(startingDir) newNames < - paste0( filez, 「TXT」) file.rename(filez,newNames)' 我得到這樣的: 'file.rename(filez,newNames) [1]假假假FALSE' 文件名/擴展名不似乎在我查看Windows文件夾中的文件時發生了變化。 – omwrichmond 2014-10-01 21:13:13

回答

3

嘗試paste(filez ,".txt", sep="")
你應該追加」 .TXT 「列表中的

+1

或者只是'paste0(filez,「.txt」)' – 2014-09-26 23:34:53

+0

這些命令更改列表中的文件名,但不是實際的文件名(我可以在Windows文件夾中查看文件名)。 – omwrichmond 2014-10-01 20:50:29

2

所有元素也可以使用sprintf

x <- c("/myDirectory/File1", "/myDirectory/File2", "/myDirectory/File3") 
sprintf("%s.txt", x) 
# [1] "/myDirectory/File1.txt" "/myDirectory/File2.txt" "/myDirectory/File3.txt" 
+0

當我查看Windows文件夾中的文件時,'sprintf'似乎沒有更改文件名或擴展名。 – omwrichmond 2014-10-01 20:51:45

3

如果你已經知道的文件沒有擴展,只需要添加它們,sub將被罰款。

f <- c('/myDirectory/File1', '/myDirectory/File2', '/myDirectory/File3') 
f <- sub('$', '.txt', f) 
# [1] "/myDirectory/File1.txt" "/myDirectory/File2.txt" "/myDirectory/File3.txt" 

但是,如果您需要執行健全性檢查,我會提出類似以下的建議。這將檢查哪些文件實際上具有擴展名,並且如果它們不然後.txt將被附加到那些特定文件。

f <- c('/myDirectory/File1', '/myDirectory/File2', '/myDirectory/File3.csv') 
f <- ifelse(!grepl('\\.[^.]+$', f), paste0(f, '.txt'), f) 
# [1] "/myDirectory/File1.txt" "/myDirectory/File2.txt" "/myDirectory/File3.csv" 
+0

當我運行: 'f < - c('/ myDirectory/file1','/ myDirectory/file2','/ myDirectory/file3') f < - sub('$','.txt',f) ' 我得到:當 '>˚F [1] 「/myDirectory/file1.txt」 [2] 「/myDirectory/file2.txt」 [3] 「/myDirectory/file3.txt」'然而,我查看Windows文件夾中的文件,名稱和擴展名未更改。 – omwrichmond 2014-10-01 21:37:54

相關問題