R语言从多子目录复制文件至目标文件夹时报错求助
解决R语言多子目录文件复制/移动问题
我来帮你分析下问题所在,以及对应的解决办法:
错误原因
你用basename(list.files(path, recursive = T))提取了文件名,但这一步丢失了文件的完整路径信息。file.copy需要知道源文件的具体位置,只给文件名的话,R会默认在当前工作目录找这些文件,自然找不到子目录里的文件,所以报错"No such file or directory"。
修正后的代码方案
# 目标文件夹路径 new.folder <- "path/to/new/folder" # 先确保目标文件夹存在,不存在则自动创建 dir.create(new.folder, recursive = TRUE, showWarnings = FALSE) # 获取所有子目录中文件的完整路径(关键:full.names = TRUE) all_files <- list.files(path = "your/source/directory/path", recursive = TRUE, full.names = TRUE) # 复制文件到目标文件夹,overwrite可选,如需覆盖已存在文件设为TRUE file.copy(from = all_files, to = new.folder, overwrite = FALSE)
关键细节说明
list.files的full.names = TRUE参数:会返回每个文件的完整绝对路径(或相对路径,取决于你的path设置),这样file.copy能准确找到源文件。dir.create的recursive = TRUE:如果目标文件夹的上级目录不存在,也会自动创建,避免因为目录不存在导致复制失败。- 如果需要移动文件而不是复制,把
file.copy换成file.rename即可,但注意file.rename不支持跨文件系统移动(比如从C盘到D盘),这种情况还是先复制再删除源文件更稳妥。
内容的提问来源于stack exchange,提问作者DanielL
相关产品推荐
相关产品推荐

