2013-11-27 1 views
1

초보자를 도와주세요 :) 파일에있는 래스터를 통해 루프로 보내려하고 R로 가져 와서 이름을 지정합니다. 파일 이름에서.R에서 래스터를 반복하고 파일 이름과 관련된 이름을 지정하는 방법

내가 어떻게 루프 래스터을 통해 알아 냈어요 그리고

# Establish path to raster files 
hab = "C:\\Michelle\\Michelle\\R\\Variables"   
hab = list.files(path = hab, full.names = T, recursive = T) # path to each file 
hab = hab[substring(hab,nchar(hab)-2,nchar(hab))=="ovr"]  # keep the raster file path 

밖으로 잘 경로 이름의 문자열을 얻을 수 있습니다,하지만 난 관련 파일 이름으로 각각의 이름을하는 방법을 알아낼 수 있습니다 . 아래 코드의 첫 번째 줄에서 파일 이름을 추출 할 수 있지만 .ovr은 여전히 ​​첨부되어 있습니다.

#Extract File names for each raster 
file = unlist(lapply(hab,function(x) strsplit(x,"/")[[1]][3])) # vector of file names 
# process each raster in HAB 
for(j in 1:length(hab)){ 
    a = raster(hab[j])} 

답변

1

할당을 사용합니다.하지만 유효한 래스터 벡터를 함수에 전달하여 래스터 스택이나 벽돌을 만들 수도 있습니다. 원래의 래스터 이름은 래스터 객체에 보관됩니다. 그러나 모든 래스터가 공통 해상도, 치수 (행/열), 범위 및 원점 좌표를 공유해야합니다. 공간 모델을 예측하려면이 입력을 사용하고 예측을 호출하십시오. 래스터 패키지에는 래스터 스택/브릭 객체를 예측하고 메모리를 안전하게 유지하는 래퍼가 있습니다. 나는 당신의 코드에 대한 제안을했다.

# if you set the working directory you do not need to return the full path in list.files.  
    setwd("C:/Michelle/Michelle/R/Variables") 

# Use pattern arg to return a wildcard for ovr 
    hab = list.files(getwd(), pattern="ovr$", full.names=FALSE) 

# Create raster stack and display associated names 
r <- stack(hab) 
    names(r) 

# Here is how you return just the files names 
    hab.names <- c(unlist(lapply(strsplit(hab,"[.]"), FUN=function(x) { x[1] }))) 

# For loop assigning files names to individual raster objects 
    for(j in 1:length(hab)) { assign(hab.names[j], raster(hab[j]) } 
+1

'stack'에 +1, 'use assign'에 -1. 파일 이름을 순회하면서 각각의 파일을 읽으면 (실제로 솔직히 그들이하는 일을 확신 할 수는 없지만) 우리는'assign'을 추천해서는 안됩니다. 래스터에 대한 목록을 생성 한 다음'names <--'를 사용하는 것이 더 좋습니다. – joran

+0

고마워요! 나는 루프를 풀어 줄 것이다. 인터넷상의 모든 곳에서 스택을 권장하지만 래스터는 크기와 해상도가 모두 다릅니다. 가져온 후 자르기 및 리샘플링을 루프에 추가해야합니다 (몇 개를 집계 한 후). – GreenlawM

+0

래스터가 일치한다고 확신하는 경우 quick = TRUE 인수를 사용할 수 있으며 스택 함수는 해상도와 범위가 일치하는지 확인하지 않습니다. 그러나 GAS에서 스냅 참조를 설정하지 않으면 래스터의 원점 좌표가이 좌표와 일치하는지 확실히 확인해야합니다. –