在 R 中重命名文件
Rename files in R
我在重命名来自 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:这里的解决方案是让 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()
中指定的路径表明您不在正确的目录中
解决此问题的一种方法是使用 8.3 version of a filename,它保证是 ASCII-only。主要问题是(据我所知)没有办法在 R 中以编程方式获得它,所以你应该 double-check 这是正确的:
files <- paste0("RAUN~", 1:10, ".XLS")
newfiles <- paste0("novi_", 1:10, ".xlsx")
file.rename(files, newfiles)
您可以从命令行使用 DIR /X
获取 8.3 文件名。
我在重命名来自 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:这里的解决方案是让 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()
中指定的路径表明您不在正确的目录中
解决此问题的一种方法是使用 8.3 version of a filename,它保证是 ASCII-only。主要问题是(据我所知)没有办法在 R 中以编程方式获得它,所以你应该 double-check 这是正确的:
files <- paste0("RAUN~", 1:10, ".XLS")
newfiles <- paste0("novi_", 1:10, ".xlsx")
file.rename(files, newfiles)
您可以从命令行使用 DIR /X
获取 8.3 文件名。