[R] R does not recognise columns and rows as they are supposed to be
Rui Barradas
ruipbarradas at sapo.pt
Thu May 24 18:53:18 CEST 2012
Sorry, forgot the last line in the op code.
write.table(extract, ...) is called every time through the loop, not just
one time after it. Put it after closing '}'.
Rui Barradas
Rui Barradas wrote
>
> Hello,
>
> There are several things with your code, most of which are not errors.
>
> 1. X<-c(364:369) ; Y<-c(82:92 and later c(1:365)
> Expressions of the form m:n are integer sequences, the c() is not needed.
>
> 2. extract<-vector()
> First you create the vector, then keep extending it throughout the loop.
> This is much slower.
> If you know the final length (and type), create it like this:
> extract <- numeric(365) # or double(365)
>
> 3. 'dir1' is not used.
>
> 4. Now the readBin instruction:
> 4.1. 'file' is the name of a function, use, say, 'file1' instead.
> 4.2. Option 'signed' defaults to TRUE but it's only valid for integer
> types.
>
> 5. And, maybe this is the problem, in R, doubles are 8 bytes, not 4. Get
> rid of option 'size', like the help page says,
>
> "If size is specified and not the natural size of the object, each element
> of the vector is coerced to an appropriate type before being written or as
> it is read."
>
> You are NOT reading doubles.
>
> As for the rest, it seems ok to me. (Keep option 'n' in readBin.)
>
> Hope this helps,
>
> Rui Barradas
>
> Jonsson wrote
>>
>> Dear All,
>> The code given bellow is to extract values of one region and write that
>> to a text file(there are 365 binary files in the directory).
>> The problem which I am facing is that all my files are binary with size
>> of 360 rows and 720 columns.
>> I specified that in this line:
>> file2<-matrix(data=file,ncol=720,nrow=360) but I got an error : Error in
>> mean(file2[X, Y], na.rm = TRUE) : subscript out of bounds.
>> and then I rewrote the above line as
>> :file2<-matrix(data=file,ncol=360,nrow=720.I put ncol=360 and nrows =720
>> which is not right.But that worked and I didn't get any error.however,the
>> results were not correct.
>> Any help please
>> X<-c(364:369) ; Y<-c(82:92) ##### for sellected region
>> extract<-vector()
>> dir1<- list.files("C:\\Users\\aalyaari\\Desktop\\New folder
>> (10)\\Climate_Rad_f_GAMMA_%d.img", full.names = TRUE)
>> listfile<-dir()
>> 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\\aalyaari\\Desktop\\New folder
>> (10)\\sam.txt")}
>>
>
--
View this message in context: http://r.789695.n4.nabble.com/R-does-not-recognise-columns-and-rows-as-they-are-supposed-to-be-tp4631217p4631229.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list