【问题标题】:renaming multiple files in a folder counting up from 001 to xxx in R重命名文件夹中的多个文件,从 R 中的 001 计数到 xxx
【发布时间】:2018-10-28 03:09:21
【问题描述】:

我想重命名已保存在文件夹中的文件列表。当前文件的名称如下所示:

000_html-code.html
...
217_html-code.html

为了处理文件,我想从 001 开始,还有一些文件编号丢失,即 163,这会导致 R 出现问题。因此,我想命名它们:

001_html-code.html
...
216_html-code.html

我尝试了以下代码,但除了没有对 xxx-xxx 施展魔法(而是使用 1:216)之外,它还会引发错误消息('from' 和 'to' 参数长度不同):

d <- list.files("C:/Users/[NAME]/Desktop/[FOLDER NAME]")
lapply(d, function (name) {
  file.rename("*_html-code.html", paste0(1:216,"_html-code"))
})

我做错了什么?

非常感谢!

【问题讨论】:

  • from 是 "*_html-code.html",to 是 paste0(1:216,"_html-code"))(216 元素向量)。所以长度不一样。此外,您永远不会在函数中使用 name 参数

标签: r web-scraping rename file-rename


【解决方案1】:

不需要lapply 循环,file.rename 是矢量化的。
试试这个:

d <- list.files("C:/Users/[NAME]/Desktop/[FOLDER NAME]")
file.rename(d, sprintf("%03d_html-code", seq_along(d)))

注意使用sprintf 以获得3 位数字。

【讨论】:

  • 谢谢!它不会给我一条错误消息,但会以某种方式为所有文件返回 FALSE 并且不会重命名它们:-/
  • @Carolin 尝试查看您是否正确读取目录。 d的内容是什么?我会使用函数list.files 参数pattern 来获得可预测的结果。 (我已经用一小部分文件进行了尝试,并且成功了。)
  • :@Rui Barradas:很抱歉再次提出更多问题。设置模式可以识别文件夹,但是,现在所有文件都从文件夹中删除。他们是否保存在其他地方?
  • 这次我还设置了 full.names = T,因为它在之前的一些代码中有效
  • 它现在确实有效。我认为 1 个文件的命名存在问题,因此我使用了未更正名称的原始数据版本。我用 .html 扩展了 sprintf 以获取 html 文件作为输出。再次感谢!
猜你喜欢
  • 2014-10-29
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 2019-08-21
  • 2021-04-02
  • 1970-01-01
  • 2018-05-13
相关资源
最近更新 更多