2016-09-23 67 views
0

我有Tiff格式的14個光柵文件,我想讀取一系列像素(相同文件位置)的值。但是,當我運行R代碼時,預期結果並未顯示出來。你能告訴我爲什麼嗎?預期結果不打印for 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

如果您希望R在循環中打印東西,則需要顯式調用print。例如:

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

則不會打印結果,因爲指令

mymatrix[1,771]

是 「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) 
print(mymatrix[1,771]) 
} 

應該工作。

但是,它不會將結果數組存儲在屏幕上的任何地方。 我建議你看看raster包的extract功能,以獲得更好的解決方案。如果你使用像事先建立一個rasterstack:

mystack <- stack(mylist) 

您也可避免遍歷文件,只是這樣做:

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

,你應該在「結果得到的結果「可變

HTH,

洛倫佐

HTH,

Lorenzo