我有一个包含许多文件夹的目录(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
因此,我的工作目录包含文件夹a-f,我想将文件a-c移至名为gp1的子目录中,并将d-f移至名为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 = "")
这就是我被困住的地方。我尝试编写一个循环,将每个文件夹移动到适当的子目录,但是它正在移动所有文件夹,而不是成批移动(所以我在“ batch1”和“ batch2”中获得了文件夹a-f的副本)
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),但是循环是我得到的最接近的东西。
有人能指出我要去哪里的正确方向吗?
答案 0 :(得分:0)
这对我有用。代替上一个循环,使用:
bintray {
pkg {
userOrg = 'myorganizationname'
}
}
函数ext{}
返回目录中的所有现有对象。将每一行与其批处理名称匹配,并在其中创建目录。