下面给出的代码是提取一个区域的值并将其写入文本文件(目录中有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")
}
答案 0 :(得分:0)
在此代码中:
mean(file2[X,Y],na.rm=TRUE)
您正在选择行X和列Y.您只有360行。你可能会想要这个:
mean(file2[Y,X],na.rm=TRUE)