如何在R中无需for循环将单个文件复制到所有子目录?
无需for循环实现单个文件批量复制到多个子文件夹
你其实可以直接用file.copy()实现需求,关键是利用它的to参数支持向量输入的特性——不需要循环,一次就能把单个文件复制到多个目标路径。
具体步骤:
- 确定源文件的完整路径
- 准备好所有新建子文件夹的路径列表(既然是你自己创建的,应该已经有这个列表;如果是统一放在某个父目录下,也可以用
list.dirs()快速获取) - 构造每个子文件夹中目标文件的完整路径(子文件夹路径 + 源文件名)
- 调用
file.copy()完成批量复制
代码示例:
# 1. 定义源文件路径 source_file <- "path/to/your/target_file.txt" # 2. 你的新建子文件夹路径列表(示例) subfolders <- c("output/sub1", "output/sub2", "output/sub3") # 如果子文件夹都在同一父目录下,也可以自动获取: # subfolders <- list.dirs("output", recursive = FALSE) # 3. 构造每个目标文件的完整路径 target_paths <- file.path(subfolders, basename(source_file)) # 4. 执行批量复制(如需覆盖已存在文件,添加overwrite=TRUE) file.copy(from = source_file, to = target_paths, overwrite = TRUE)
说明:
file.copy()的to参数接受多个路径组成的向量,每个元素对应一个目标文件的位置,这样就能一次性完成单个文件到所有子文件夹的复制,完全不需要for循环。之前的误解是没注意到它的批量目标支持能力。
内容的提问来源于stack exchange,提问作者wernor
相关产品推荐
相关产品推荐

