0

次のコードは、1 つの領域の値を抽出し、それをテキスト ファイルに書き込みます (ディレクトリには 365 個のバイナリ ファイルがあります)。私が直面している問題は、すべてのファイルが 360 行 720 列のサイズのバイナリであることです。この行でそれを指定しました:

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

しかし、私はエラーが発生しました:

mean(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 に答える