gpt4 book ai didi

R - file.copy 函数

转载 作者:行者123 更新时间:2023-12-04 11:38:29 25 4
gpt4 key购买 nike

作为更大脚本的一部分,我需要将所有 <.csv> 文件从一个目录移动到另一个目录。我写了一个简单的脚本来做到这一点,并且运行良好,但由于某种原因,它现在无法正常工作,我正在努力找出我做错了什么。

代码是:

rawPath <- "./test_dir1"
dataPath <- "./test_dir2"

dataFiles <- dir(rawPath, "*.csv", ignore.case = TRUE, all.files = TRUE)
file.copy(dataFiles, dataPath, overwrite = TRUE )

但我收到以下错误:

Warning messages: 1: In file.copy(dataFiles, dataPath, overwrite = TRUE) :
problem copying .\test_dir1\11085.lis.csv to C:\Users\Desktop\test_dir2\11085.lis.csv: No such file or directory


One error message for each file
请在以下链接中找到我所拥有的简化版本的试用目录和文件:
https://www.dropbox.com/sh/7eqvyugc472w19i/AACIjlytbB4s55X0Ga1hmKQka?dl=0

任何帮助,将不胜感激。谢谢!

最佳答案

您的问题是您已经提取了相对于 rawPath 的文件名,然后尝试在 file.copy 中使用它,而您在不同的目录中。运行你的代码,看看 dataFiles :

dataFiles
# [1] "11085.lis.csv" "13087.lis.csv" "17089.lis.csv" "5081.lis.csv" "7083.lis.csv"

你要
file.copy(paste(rawPath, dataFiles, sep = .Platform$file.sep), dataPath, overwrite = TRUE)
# [1] TRUE TRUE TRUE TRUE TRUE

或者:
file.copy(file.path(rawPath, dataFiles), dataPath, overwrite = TRUE)
# [1] TRUE TRUE TRUE TRUE TRUE

重现:
dir.create("test_dir1")
dir.create("test_dir2")
files <- paste0(c(5081, 7083, 11085, 13087, 17089), ".lis.csv")
file.create(paste("test_dir1", files, sep = .Platform$file.sep))
# [1] TRUE TRUE TRUE TRUE TRUE

dir("test_dir1")
# [1] "11085.lis.csv" "13087.lis.csv" "17089.lis.csv" "5081.lis.csv" "7083.lis.csv"
dir("test_dir2")
# character(0)

rawPath <- "./test_dir1"
dataPath <- "./test_dir2"
dataFiles <- dir(rawPath, "*.csv", ignore.case = TRUE, all.files = TRUE)

# To reproduce the error:
file.copy(dataFiles, dataPath, overwrite = TRUE )

# To run without error:
file.copy(file.path(rawPath, dataFiles), dataPath, overwrite = TRUE)

关于R - file.copy 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49593823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com