# [R] maxtrix to permutation vector

Gavin Simpson gavin.simpson at ucl.ac.uk
Fri May 29 21:07:29 CEST 2009

```On Fri, 2009-05-29 at 11:08 -0700, Ian Coe wrote:
> Hi,
>
>    Is there a way to  convert a matrix into a vector representing all
> permutations of values and column/row headings with native R functions?
> I did this with 2 nested for loops and it took about 25 minutes to run
> on a  ~700x700 matrix.  I'm assuming there must be a smarter way to do
> this with R's vector commands, but being new to R, I'm having trouble
> making it work.

Here is one way:

> mat <- matrix(1:9, ncol = 3)
> colnames(mat) <- c("a","b","c")
> rownames(mat) <- c("d","e","f")
>
> rc <- expand.grid(rownames(mat), colnames(mat))
> res <- data.frame(Row = rc\$Var2, Col = rc\$Var1,
+                   Perm = as.vector(mat))
> res
Row Col Perm
1   a   d    1
2   a   e    2
3   a   f    3
4   b   d    4
5   b   e    5
6   b   f    6
7   c   d    7
8   c   e    8
9   c   f    9

And timings for something similar to your 700*700 problem:

> mat <- matrix(seq_len(700*700), ncol = 700)
> colnames(mat) <- as.character(1:700)
> rownames(mat) <- as.character(1:700)
>
> system.time({
+ rc <- expand.grid(rownames(mat), colnames(mat))
+ res <- data.frame(Row = rc\$Var2, Col = rc\$Var1,
+                   Perm = as.vector(mat))
+ })
user  system elapsed
0.631   0.028   0.690
Row Col Perm
1   1   1    1
2   1   2    2
3   1   3    3
4   1   4    4
5   1   5    5
6   1   6    6

HTH

G

>
>
>
> Thanks,
>
> Ian
>
>
>
>      [a] [b] [c]
>
> [d]    1    4    7
>
> [e]    2    5    8
>
> [f]    3    6    9
>
>
>
> a d 1
>
> a e 2
>
> a f 3
>
> b d 4
>
> b e 5
>
> b f 6
>
> c d 7
>
> c e 8
>
> c f 9
>
>
>
>
>
>
>
>
>
> Ian Coe
>
>
>
> Connective Capital Management, LLC
>
> 385 Homer Ave.
>
> Palo Alto, CA 94301
>
> (650) 321-4826 ext. 03
>
>
>
> CONFIDENTIALITY NOTICE: This e-mail communication (inclu...{{dropped:23}}
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.
--
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
Dr. Gavin Simpson             [t] +44 (0)20 7679 0522
ECRC, UCL Geography,          [f] +44 (0)20 7679 0565
Pearson Building,             [e] gavin.simpsonATNOSPAMucl.ac.uk
Gower Street, London          [w] http://www.ucl.ac.uk/~ucfagls/
UK. WC1E 6BT.                 [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090529/6b37c756/attachment-0002.bin>
```