重命名R

时间:2018-03-24 19:01:49

标签: r unicode file-rename

我在重命名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字符č,但我不知道如何为此找到解决方案。

2 个答案:

答案 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文件名。