文件.复制在R中不工作

jyztefdp  于 2023-09-27  发布在  其他
关注(0)|答案(4)|浏览(114)

我正在使用R中的命令file.copy,它抛出了一个错误,但我找不到原因。

file.copy(from="Z:/Ongoing/Test", to = "C:/Users/Darius/Desktop", overwrite = TRUE, recursive = TRUE)

 Warning message:
 In file.copy(from = "Z:/Ongoing/Test",:
 problem copying Z:/Ongoing/Test to C:/Users/Darius/Desktop/Test: No such file or directory

有人能看出问题吗?命令行不起作用,即使它只给你一个警告消息。

nzk0hqpo

nzk0hqpo1#

实际上,我不认为有任何直接的方法来复制目录。我写了一个函数,可能对你有帮助。
此函数接受两个参数作为输入:
from:要复制的目录的完整路径
to:目录要复制到的位置

假设:from和to是一个目录的路径。

dir.copy <- function(from, to){

  ## check if from and to directories are valid
  if (!dir.exists(from)){
    cat('from: No such Directory\n')
    return (FALSE)
  }
  else if (!dir.exists(to)){
    cat('to: No such Directory\n')
    return (FALSE)
  }

  ## extract the directory name from 'from'
  split_ans <- unlist(strsplit(from,'/'))

  dir_name <- split_ans[length(split_ans)]

  new_to <- paste(to,dir_name,sep='/')

  ## create the directory in 'to'
  dir.create(new_to)

  ## copy all files in 'to'
  file_inside <- list.files(from,full.names = T)

  file.copy(from = file_inside,to=new_to)

  ## copy all subdirectories
  dir_inside <- list.dirs(path=from,recursive = F)

  if (length(dir_inside) > 0){
    for (dir_name in dir_inside)
      dir.copy(dir_name,new_to)
  }

  return (TRUE)
}
ut6juiuv

ut6juiuv2#

file.copy()不创建目录。所以只有当你复制到已经存在的文件夹时才有效。

sirbozc5

sirbozc53#

有类似的问题:
blog很有用。通过添加full.names=Toverwrite = T稍微修改了代码。

current.folder <- "E:/ProjectDirectory/Data/"
new.folder <- "E:/ProjectDirectory/NewData/"
list.of.files <- list.files(current.folder, full.names = T)
# copy the files to the new folder
file.copy(list.of.files, new.folder, overwrite = T)
uinbv5nw

uinbv5nw4#

这是最适合我的解决方案。这将获取父目录中的每个文件/文件夹并将其克隆到另一个目录,并使用可选的overwrite参数。

clone_dir <- function(from,to,overwrite=F){
  for(FOLDER in list.files(from,full.names = T)){
    file.copy(
      from = FOLDER,
      to = to,
      recursive = T,
      overwrite = overwrite
    )
  }
} 

clone_dir(
  from = "your/parent/dir",
  to = "your/cloned/dir",
  overwrite = F
)

我更喜欢这种方式,而不是默认的R方式,它通常将“from”目录文件夹添加到“to”目录中。

file.copy(
  from = "your/parent/dir",
  to = "your/cloned/dir",
  recursive = T,
  overwrite = F
)

相关问题