在循环中如何更改具有特定名称的目录?

Within a loop how can I change directories that have a specific name?

我在向量中分配物种的名称

sp1 <- Basper

直接访问文件例如:

occ_sp1 <- read.table (paste ("H: / Botrops_p /", sp1, '. txt', sep = ""), 
                       header = TRUE, sep = "\ t")

all.species <-list.files("H:/Sim_crotalus/Crota.puntos.pam",pattern=".txt")
sp.names <- gsub(".txt","",all.species)
sp.combn <- combn(sp.names,2)
sp.combn 

resul <- matrix(nrow=406,ncol=7,byrow=TRUE)
colnames(resul) <- c("D1","D2","p.D1","p.D2")

  for(i in 1:ncol(sp.combn)){
  print(i)
  sp1 <- sp.combn[1,i]
  sp2 <- sp.combn[2,i]
  
  occ_sp1 <- read.table(paste("H:/E_Crotalus/par1/",sp1,'.txt',sep = ""), header=TRUE,sep="\t")
occ_sp2 <- read.table(paste("H:/E_Crotalus/par1/",sp2,'.txt',sep = ""), header=TRUE,sep="\t")

clim2 <- stack(list.files(path="H:/Crotalus_pam/M2/Caqui", pattern='.asc',full.names = TRUE))

w 我需要访问与 sp1 同名的文件夹(子目录)来堆叠我尝试过的光栅文件

setwd ("H: / Botrops_p / Basper")

clim2 <- stack (list.files (pattern = '. asc', full.names = TRUE))

有一些方法可以避免将文件夹名称放在 setwd() 中并将其与开头分配的 sp1 相关联

为了让问题更清楚一点,我放了一个更广泛的代码示例

我有一个物种列表,如果是 txt 文件,我会组合成对的物种,没问题,因为我将文件名分配给向量 sp1 <- Catrox

但在 .asc 的情况下,它们是具有相同名称 sp1 的不同文件夹,例如在本例中为 Catrox,它们每个包含 6 个光栅

在这种情况下,我将不得不手动更改名称 Caqui

有一些方法可以将文件夹识别为同名文件

终于!我对蛇和 R 的兴趣发生了交叉!

如果看不到磁盘上目录和文件的结构,就很难确切地弄清楚您需要做什么,但以下内容可能会有所帮助:

# If sp1 is 'Caqui', this will return the paths of all .asc files
#   in the 'H:/Crotalus_pam/M2/Caqui/' directory:
thisDir <- paste("H:/Crotalus_pam/M2/", sp1, sep="")
clim2 <- stack(list.files(path=thisDir, pattern='.asc', full.names=TRUE))

如果您仍然遇到问题,请使用更多详细信息更新您的问题(尤其是文件和目录的组织方式的详细信息)。