首页 > 解决方案 > r 根据列表复制到 wd 之外

问题描述

我正在尝试做与其他人非常相似的事情,但在工作目录之外,我不想每次运行这个特定功能时都更改它。

但基于例如 dir1 中保存的 .txt 文件中保存的列表。

这是我的复制功能。我已阅读其他帖子,但当原始目录中有超过 1 个 .txt 文件时无法让它们工作

#sp6
current.folder <- "test1"
new.folder6 <- "test2"

#clear file list 
list_of_files6<-NULL

# find the files that you want
list_of_files6 <- read.delim("Mp20181111.txt", header = F)

print(list_of_files6)

setwd(current.folder) 
for(i in list_of_files6)
{
  file.copy(i, new.folder6)
}

标签: rcopy

解决方案


您的问题不清楚,但据我了解,您有一个数据框 list_of_files6 ,其中包含一个文件向量以及一个目录名称向量(没有路径)。

 mainDir <- as.character(getwd())
    if (nrow(list_of_files6) > 0) {
      subDir <- as.character(list_of_files6$DIRECTORYNAMES)
    } else{
      stop(NULL)
    }
    if (!(dir.exists(file.path(mainDir, subDir)))) {
      dir.create(file.path(mainDir, subDir))
    }

如果 list_of_files6$FILENAMES 没有进行它的路径:

list_of_files6$FILEPATHS <- paste0(mainDir, "/", list_of_files6$FILENAMES)

假设 list_of_files6 包含目录名和文件名:

    for(i in 1:length(list_of_files6)){
       if(file.exists(list_of_files6$FILEPATHS[i])){
        file.copy(list_of_files6$FILENAMES[i], list_of_files6$DIRECTORYNAMES[i], overwrite = TRUE)
}else{
     i <- i + 1
}
    }

推荐阅读