У меня есть каталог (Windows-машина), содержащий много папок.Я хотел бы разбить эти папки на пакеты по три и переместить их в отдельные подкаталоги.
ID <- c("a", "b", "c", "d", "e", "f")
group <- c("gp1", "gp1","gp1","gp2","gp2","gp2")
samples <- as.data.frame(cbind(ID,group))
id group
1 a gp1
2 b gp1
3 c gp1
4 d gp2
5 e gp2
6 f gp2
Итак, мой рабочий каталог содержит папки af, и я хочу переместить файлы ac в подкаталогназывается gp1, и df в подкаталог с именем gp2.(На самом деле у меня более ста таких папок, это всего лишь небольшой пример, и каждая папка содержит несколько больших файлов).
Это то, что у меня есть:
# find number of samples
nSamps <- nrow(samples)
# calculate how many groups are required
nGrps <- ceiling(nrow(samples)/3)
# list of batch files we want to create
Batchlist <- 1:nGrps
# create folders with appropriate batch number
for (i in Batchlist){
dir.create(paste("batch",i,sep=""))
}
# assign a group name to each sample
fileList <- rep(Batchlist, each = 3, len = nrow(samples))
# assign each sample a folder name
samples$group <- paste("batch",fileList, sep = "")
Вот где я застреваю.Я попытался написать цикл, который перемещает каждую папку в соответствующий подкаталог, однако он перемещает все папки, а не пакетами (поэтому я получаю копии папок af в «batch1» и «batch2»)
for (j in samples$group){
for (i in samples$ID){
setwd(paste("file/path","/",j,sep = ""))
dir.create(file.path(i))
setwd("../")
file.rename(from = i, to = paste(j,"/", i, sep = ""))
}
}
Я пробовал несколько других вещей (например, написание небольшой функции и использование sapply), но цикл - самый близкий, который я получаю.
Может кто-нибудь указать мне правильное направление, где я иду не так?