1
我有一個202行和201列的柵格地圖 這個地圖中有一些柵格,其像素值爲0我想寫一個函數,返回所有的像素值0格座標 我怎麼能做到這一點 我嘗試使用,如果循環和while循環 但它總是說TRUE/FALSE需要 這裏是我的示例代碼獲取值等於0的像素的座標
library(raster)
library(rgdal)
library(maptools)
library(sp)
setwd("E:/Landsat-data-NASA atm-corrected/sample_day1")
restdir2 <- ("E:/Landsat-data-NASA atm-corrected/sample_day1")
n3 <- list.files(restdir2, pattern="*band4_clip_1.tif", full.names=TRUE)
n4 <- list.files(restdir2, pattern="*cloud_qa_clip_1.tif", full.names=TRUE)
n5 <- list.files(restdir2, pattern="*cloud.tif", full.names=TRUE)
create<- function(x,y)
{
layer <- raster(n4)
layer2 <- raster(n3)
for(c in 1:x)
{
for(r in 1:y)
{
nl<- layer2
if(layer[c,r]==0)
return layer[c,r]
}
}
}
create (10,10)
沒有你的數據,我們不能運行任何代碼的...也許你可以爲一個簡單的例子,共享數據?您應該閱讀R中函數的介紹。'return()返回一個對象並停止運行該函數......一個函數只能返回一個對象。這也是一個功能,所以你必須使用parens。如果你把它放在* for循環中,第一次通過循環就會返回並且永遠不會到達第二次。 – Gregor
將'c'用作變量也是很不好的做法,因爲'c()'已經是最常用的R函數的名字。 – Gregor