[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