在R中复制向量指定文件名的子集文件至目标文件夹的问题
问题求助:从指定文件夹复制指定文件到目标文件夹
- 桌面有两个文件夹A(含6000个
.dcm格式文件)和B(空文件夹),需从A中复制5000个指定文件到B,仅执行复制操作,无需删除或重命名。 - 已生成存储目标文件名的字符向量
tocopy(示例:"file1.dcm" "file2.dcm"),以及存储目标文件全路径的向量paths;tocopy2由数据框对应列生成,与tocopy结果一致。 - 文件夹路径格式正确,脱敏后定义如下:
current= "C:/Users/pathtoA" new= "C:/Users/pathtoB"
已尝试的代码及问题
- 拼接路径复制,返回全
FALSE:
file.copy(from = paste0("C:/Users/pathtoA", tocopy), to = paste0("C:/Users/pathtoB", tocopy)) # 返回全FALSE
- 使用全路径向量复制,返回全
FALSE:
file.copy(paths, to= "C:/Users/pathtoB") # 返回全FALSE
- 指定
from/to文件夹复制,报错参数无效:
file.copy( tocopy, from="C:/Users/pathtoA", to="C:/Users/pathtoB", recursive = TRUE, overwrite= TRUE, copy.mode = TRUE, copy.dates = TRUE ) # 报错:Error in file.copy...unused argument (copy.dates = TRUE)
- 直接传入向量和路径,报错
overwrite参数无效:
file.copy (tocopy2, from = current, to = new) # 报错:Error in file.copy(tocopy, from = current, to = new) : invalid 'overwrite' argument
- 添加
overwrite=TRUE后报错类型错误:
file.copy (tocopy2, from = current, to = new, overwrite = TRUE) # 报错:Error in recursive && to %in% from : invalid 'x' type in 'x && y'
解决方案
方法1:正确拼接源文件全路径,目标指定文件夹路径
file.copy的from需要是源文件的完整路径,to指定目标文件夹路径即可自动保留原文件名。注意用file.path拼接路径,避免手动加分隔符出错:
# 生成正确的源文件全路径 source_paths <- file.path(current, tocopy) # 执行复制,允许覆盖(B为空可省略overwrite,保留更通用) file.copy(from = source_paths, to = new, overwrite = TRUE)
可先检查路径是否正确:
head(source_paths) # 应输出类似 "C:/Users/pathtoA/file1.dcm" 的有效路径
方法2:校验全路径向量paths的有效性
如果paths是预设的源文件全路径,先验证文件是否存在:
# 检查哪些源文件不存在 missing_files <- paths[!file.exists(paths)] print(missing_files)
若输出非空,说明paths生成逻辑有误,需重新核对文件名匹配规则;若全部存在,直接执行复制:
file.copy(from = paths, to = new, overwrite = TRUE)
方法3:修正参数错误的调用
file.copy无copy.dates参数(该参数属于file.copy2),且from需传入文件路径而非文件夹路径,正确调用方式:
file.copy(from = file.path(current, tocopy2), to = new, overwrite = TRUE, copy.mode = TRUE)
内容的提问来源于stack exchange,提问作者Laue28
相关产品推荐
相关产品推荐

