В цикле, как я могу изменить каталоги с определенным именем? - PullRequest
2 голосов
/ 29 июня 2019

Я присваиваю название вида в векторе

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 в начале

Попытка быть немного более понятной в отношениипроблема, я поставил более широкий пример моего кода

У меня есть список видов, и я сделаю комбинации пар видов в случае текстовых файлов, нет проблем, потому что я назначаю имя файла длявектор sp1 <- Catrox </p>

Но в случае .asc это разные папки с одинаковым именем sp1, например, в этом случае Catrox, и они содержат 6 растров в каждой

Вв этом случае мне придется вручную изменить имя Caqui

. Есть какой-то способ распознать папку как файл с таким же именем

1 Ответ

0 голосов
/ 30 июня 2019

Наконец-то!Мои интересы в змеях и 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))

Если у вас все еще есть проблемы, пожалуйста, обновите ваш вопрос с более подробной информацией (особенно подробности о том, как организованы ваши файлы и каталоги).

...