2016-04-19 2 views
0

Я использую команду file.copy в R, и это вызывает ошибку, но я не могу определить причину.file.copy in R не работает

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 

Может ли кто-нибудь увидеть проблему? Командная строка не работает, хотя она дает только предупреждающее сообщение.

+0

Ну, вы уверены, что исходный путь действителен? Существует ли файл? – michel404

+0

'Z:/Ongoing/Test' является файлом или каталогом? Есть ли файл и каталог под названием «test»? –

+0

Что такое list.files («Z:/Ongoing /»)? Есть ли файл с именем (exacly) «Test»? Я подозреваю, что может быть файл с именем «test.doc» или «Test.xlsx» , и вы подумайте, что он называется «Тест» из-за того, что ваш файловый браузер скрывает данные. –

ответ

4

На самом деле, я не думаю, что есть прямой способ скопировать каталог. Я написал функцию, которая может вам помочь.

Эта функция принимает входные два аргумента:

из: Полный путь к директории для копирования

на: место, к которому каталог должен быть скопирован

Допущение: от и 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) 
} 
+0

Это не файл, а целая папка под названием «test». Итак, я ищу, чтобы скопировать всю папку и файлы в нее в новое место. – Darius

+0

@Stibu На данный момент вопрос был отправлен, вопрос был не ясен. Теперь я отредактировал решение, соответствующее требованиям. –

+1

Спасибо @KunalPuri. Это был отличный ответ, и он отлично работает. – Darius

Смежные вопросы