2016-09-23 5 views
0

Tiff 형식으로 14 개의 래스터 파일이 있고 일련의 픽셀 값 (동일한 파일 위치)을 읽고 싶습니다. 그러나 R 코드를 실행했을 때 예상되는 결과가 나타나지 않았습니다. 왜 그런지 말해 줄 수 있니?for 루프에 대해 예상 결과가 인쇄되지 않습니다.

#set working directory# 
path <- 'E:/TSL_VCF/Tiffs' 
setwd(path) 
#list tiff files in the working directory# 
list.files(path, pattern = 'tif') 
#count the number of tiff files# 
mylist <- list.files(path, pattern = 'tif') 
mylength <- length(mylist) 
#get values for certain "location"# 
for (i in 1:mylength){ 
    myraster <- raster(mylist[i]) 
    mymatrix <- as.matrix(myraster) 
    mymatrix[1,771] 
} 

답변

1

루프에서 물건을 인쇄하려면 print를 명시 적으로 호출해야합니다. 예를 들어 명령

mymatrix[1,771]

가 "대"루프 내 때문에

m = rnorm(10) 
for (i in 1:10) m[i] # doesn't print 
for (i in 1:10) print(m[i]) # print 
2

결과가 인쇄되지 않는다. 이것 :

#set working directory# 
path <- 'E:/TSL_VCF/Tiffs' 
setwd(path) 
#list tiff files in the working directory# 
list.files(path, pattern = 'tif') 
#count the number of tiff files# 
mylist <- list.files(path, pattern = 'tif') 
mylength <- length(mylist) 
#get values for certain "location"# 
for (i in 1:mylength){ 
myraster <- raster(mylist[i]) 
mymatrix <- as.matrix(myraster) 
print(mymatrix[1,771]) 
} 

이 작동해야합니다.

그러나 화면에는 결과 배열이 저장되지 않습니다. 더 나은 솔루션을 위해 raster 패키지의 extract 기능을 살펴 보시기 바랍니다. 당신은 같은 것을 사용하여 사전에 rasterstack을 빌드하는 경우 :

mystack <- stack(mylist) 

당신은 또한 파일을 통해 반복하지 않도록하고 단지 같은 것을 수행 할 수 있습니다

result <- extract(mystack, as.matrix(c(1,771), nrow = 1)) 

을, 당신은 "결과에 결과를 얻을해야 "변수

HTH,

로렌

HTH

로렌조