Hi, 

I'm stuck with a fairly basic re-ordering problem. I want to extract part of a 
matrix as a vector, and reorder it to match with an erratic sequence of x,y 
coordinates. Here's an example that shows what I want and how close I've got 
(but for some reason my mind just can't get the final step at the moment!):

#Define a grid:
xy100 <- expand.grid(1:10, 1:10)
# Define a matrix ofvalues
mat <- matrix(log(xy100[,1]) * log(xy100[,2])+1, ncol = 10)/2

#Plot some the matrix with image and the same data as xy plot:
par(mfrow = c(2,2))
image(mat)
plot(xy100, cex = c(mat), pch = 20)

#define the subset of coordinates I'm interested in:
shortXY <- expand.grid(1:5, 1:5)
#and shuffle these into an erratic sequence:
rand.seq <- sample(1:25)
shortXY <- shortXY[rand.seq,]

#Identify which coordinates in the full dataset are needed (not doubt better 
ways exist!):
needed <- which(paste(xy100[,1],xy100[,2], sep = " ") %in% paste(shortXY[,1], 
shortXY[,2], sep = " "))
#Sort these into a sensible order:
sorted <- needed[order(xy100[needed,1], xy100[needed,2])]

# plot showing that when the short-coordinates are ordered (removing the 
erratic sequence)
# the sorted subset of the matrix is correctly subsetted:
plot(shortXY[order(shortXY[,1], shortXY[,2]),], cex = c(mat)[sorted], pch = 20)

#but what further ordering do I apply to the
# sorted and subsetted matrix, to mean that I don't have to alter the 
# sequence of the shortXY coordinate list? In this example it is obviously the 
value of rand.seq:
plot(shortXY, cex = c(mat)[sorted][rand.seq], pch = 20)
# but what is the general value of this: how can I recover rand.seq when it 
isn't known?

Obviously I could do some of this (much more elegantly) with merge, but for 
various reasons I don't want to (I need to run the process many, many times on 
very large datasets). Thanks for any pointers - I'm being very slow today...

Colin

PS sessionInfo()
R version 2.8.1 (2008-12-22) 
i386-pc-mingw32 

locale:
LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United 
Kingdom.1252;LC_MONETARY=English_United 
Kingdom.1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252

attached base packages:
[1] stats     graphics  grDevices datasets  tcltk     utils     methods   base  
   

other attached packages:
[1] debug_1.1.0    mvbutils_1.1.1 svSocket_0.9-5 svIO_0.9-5     R2HTML_1.58    
svMisc_0.9-5   svIDE_0.9-5   

loaded via a namespace (and not attached):
[1] tools_2.8.1



-- 
Please note that the views expressed in this e-mail are those of the
sender and do not necessarily represent the views of the Macaulay
Institute. This email and any attachments are confidential and are
intended solely for the use of the recipient(s) to whom they are
addressed. If you are not the intended recipient, you should not read,
copy, disclose or rely on any information contained in this e-mail, and
we would ask you to contact the sender immediately and delete the email
from your system. Thank you.
Macaulay Institute and Associated Companies, Macaulay Drive,
Craigiebuckler, Aberdeen, AB15 8QH.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to