我在重命名R
中的文件时遇到问题。
在桌面上的文件夹中有10个文件:
račun 1.xlsx
račun 2.xlsx
...
račun 10.xlsx
我尝试了以下内容:
files <- list.files(path = "myfolder")
file.rename(files,
paste0("novi_", 1:10, ".xlsx"))
这就是我得到的结果:
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
我想这是因为unicode字符č,但我不知道如何为此找到解决方案。
答案 0 :(得分:2)
编辑2:这里的解决方案是让OP更改控制面板中的区域设置,将格式设置为塞尔维亚语(拉丁语,塞尔维亚语)。
编辑1:查看注释:OP在Windows计算机上。这里的问题是list.files()
(并且大概是dir()
,因为它们调用相同的.Internal)将非ASCII文件名转换为ASCII,但是Windows希望file.exists()
向它发送unicode文件名,(大概也是file.rename()
)
尝试:
file.rename(gsub("c", "č", files), paste0("novi_", seq_along(files, ".xlsx"))
# could work, but it didn't for `file.exists()`
原始答案:
setwd(<your path>)
(files <- list.files())
# [1] "račun 1.xlsx" "račun 2.xlsx" "račun 3.xlsx" "račun 4.xlsx" "račun 5.xlsx [6] "račun 6.xlsx"
file.rename(files, paste0("novi_", seq_along(files, ".xlsx"))
# [1] TRUE TRUE TRUE TRUE TRUE TRUE
您在list.files()
中指定路径的事实表明您不在正确的目录中
答案 1 :(得分:0)
解决此问题的一种方法是使用8.3 version of a filename,它保证仅限ASCII。主要的问题是(据我所知),没有办法在R中以编程方式获取,所以你应该仔细检查这是否正确:
files <- paste0("RAUN~", 1:10, ".XLS")
newfiles <- paste0("novi_", 1:10, ".xlsx")
file.rename(files, newfiles)
您可以从命令行获取带有DIR /X
的8.3文件名。