0

下面给出的代码是提取一个区域的值并将其写入文本文件(目录中有 365 个二进制文件)。我面临的问题是我所有的文件都是二进制文件,大小为 360 行和 720 列。我在这一行中指定了:

file2 <- matrix(data=file,ncol=720,nrow=360) 

但我得到一个错误:

均值错误(file2[X, Y], na.rm = TRUE):下标越界。

然后我将上面的行重写为:

file2 <- matrix(data=file,ncol=360,nrow=720)

我把 ncol=360 和 nrows =720 这是不对的。但这有效,我没有收到任何错误。然而,结果并不正确。

X <- c(364:369) ;   Y <- c(82:92) #####   for sellected region
extract <- vector()
dir1 <- list.files("C:\\Users\\Climate_Rad_f_GAMMA_%d.img", full.names = TRUE)
listfile<-dir1()
for (i in c(1:365))
{
    conne <-  file(listfile[i], "rb")
    file <-  readBin(conne, double(), size=4,  n=720*360, signed=T)
    file2 <-  matrix(data=file,ncol=720,nrow=360)  
extract[i] <- mean(file2[X,Y],na.rm=TRUE)
    close(conne)
    write.table(extract,"C:\\Users\\sam.txt")
}
4

1 回答 1

0

在这段代码中:

mean(file2[X,Y],na.rm=TRUE)

您正在选择 X 行和 Y 列。您只有 360 行。你可能想要这个:

mean(file2[Y,X],na.rm=TRUE)
于 2012-05-25T01:44:58.870 回答