[R] R does not recognise columns and rows as they are supposed to be

Rui Barradas ruipbarradas at sapo.pt
Thu May 24 18:47:30 CEST 2012


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-tp4631217p4631227.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list