2014-09-26 100 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

相关问题