【问题标题】:Copying list of files from one folder to other in R在R中将文件列表从一个文件夹复制到另一个文件夹
【发布时间】:2012-05-05 04:42:19
【问题描述】:

我正在尝试在 R 中批量移动不同类型的文件。

origindir <- c("c:/origindir")
targetdir <- c("c/targetdir")
filestocopy <- c("myfile.doc", "myfile.rda", "myfile.xls", 
                 "myfile.txt", "myfile.pdf", "myfile.R")

我尝试了以下方法,但不知道如何处理所有文件:

file.copy(paste (origindir, "myfile.doc", sep = "/"), 
          paste (targetdir, "myfile.doc", sep = "/"), 
          overwrite = recursive, recursive = FALSE, 
          copy.mode = TRUE)

我不知道该怎么做。

【问题讨论】:

  • 使用lapply 来迭代filestocopy 的向量,在lapply 调用中创建一个匿名函数来替换您拥有myfile.doc...之类的lapply(filestocopy, function(x) file.copy(paste(origindir, x, sep = "/"), ...
  • 另外,看看file.path() 作为上面paste 的替代品,它应该“比粘贴快”并且在R 本身中被广泛使用。
  • @Chase 我认为file.copy 中的 from 和 to 参数实际上是矢量化的。
  • @joran - 酷!如果是这样的话,它应该就像用filestocopy 替换myfile.doc 那么简单......对吗?
  • @Chase 是的。刚刚试了一下-from可以是文件路径向量,to可以是单个目录路径或文件路径向量。

标签: r copy-paste directory


【解决方案1】:

只是扩展 Chase 的建议。

lapply(filestocopy, function(x) file.copy(paste (origindir, x , sep = "/"),  
          paste (targetdir,x, sep = "/"), recursive = FALSE,  copy.mode = TRUE))

【讨论】:

  • 当默认的file.copy 能够处理文件名向量时,我不知道你为什么要使用它。
  • 没有。不知什么原因。 Error in file.copy(from = TBL$FROM, to = TBL$TO[1]) : more 'from' files than 'to' files'TBL 是一个小标题
【解决方案2】:

正如 Joran 和 Chase 在 cmets 中已经指出的那样,您需要做的就是:

file.copy(from=filestocopy, to=targetdir, 
          overwrite = recursive, recursive = FALSE, 
          copy.mode = TRUE)

然后,如果您实际上是在移动文件,请使用以下命令删除原件:

file.remove(filestocopy)

【讨论】:

  • 我收到了这条消息:Error in file.copy(from = filestocopy, to = targetdir, overwrite = recursive, : object 'recursive' not found。递归不是内置函数吗?
  • 我遇到了同样的错误。但以下代码对我有用:flist &lt;- list.files(filestocopy, ".csv", full.names = TRUE); file.copy(flist, targetdir)
猜你喜欢
  • 1970-01-01
  • 2011-08-22
  • 2014-02-10
  • 2020-07-30
  • 2017-02-11
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多