将文件夹移动到其他文件夹

时间:2019-02-18 11:23:11

标签: r loops move

我有一个包含许多文件夹的目录(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),但是循环是我得到的最接近的东西。

有人能指出我要去哪里的正确方向吗?

1 个答案:

答案 0 :(得分:0)

这对我有用。代替上一个循环,使用:

bintray {
    pkg {
        userOrg = 'myorganizationname'
    }
}

函数ext{}返回目录中的所有现有对象。将每一行与其批处理名称匹配,并在其中创建目录。