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

时间:2019-06-29 17:35:13

标签: r subdirectory

我在矢量中指定物种的名称

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

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

1 个答案:

答案 0 :(得分:0)

最后!我对蛇和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))

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