Переместить CSV-файлы в указанную c именованную папку в архиве - PullRequest
0 голосов
/ 30 апреля 2020

У меня 16 папок с указанным c именем человека в папке Risk / Archive /, и я хочу скопировать файлы Excel (которые также содержат указанное c имя человека) из папки Risk / в папку Risk / archive / folder. в соответствии с именем папки, которое я использую ниже код, но это не то, что я хочу сделать sh.

f = list.files('Risk/')

d = list.dirs('Risk/Archive')

if (length(f) > 0) {
      File = lapply(paste0('Risk/',f), function(i){
        x <- read.xlsx(i, sheet = 1, startRow=2, colNames = TRUE, check.names = FALSE, cols = c(1:73))
        file.copy(from=i, to='Risk/Archive/', 
        overwrite = TRUE, recursive = FALSE,copy.mode = TRUE)
    x})
  File <- do.call("rbind.data.frame", File)}

1 Ответ

2 голосов
/ 30 апреля 2020

Возможно, есть лучший способ сделать это, но если я правильно понимаю, я думаю, что это должно сработать:

# Get list of names of people
names <- list.dirs(path = "./Risk/Archive",
                   full.names = F,
                   recursive = F)

# Get list of files to copy
files <- list.files(path = "./Risk",
                    pattern = ".xlsx",
                    full.names = T)

# Loop through each name and move the file for that person
for(name in 1:length(names)){
  # Current name in loop
  cname <- names[name]
  # Get index of file that contains current name
  name.idx <- grep(files, pattern = cname)
  # Get file path for file that matches current name
  file.path <- files[name.idx]
  # Make file path for archive folder for current name
  name.path <- paste0("./Risk/Archive/", cname)
  # Copy file from "Risk" folder to "Archive" folder for current name
  file.copy(from = file.path,
            to = name.path,
            overwrite = T)
  # Remove original file after archiving
  file.remove(file.path)
  # Output message
  cat(paste0("Moved file for: ", cname, "\n"))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...