# Transpose

**URL:** <https://www.ruby-forum.com/t/transpose/84059>\
**Category:** Ruby\
**Created:** [January 31, 2007, 10:56pm UTC](https://www.ruby-forum.com/t/transpose/84059 "2007-01-31T22:56:12Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![robkuz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/34f0e0/32.png) [@robkuz](https://www.ruby-forum.com/u/robkuz)\
**Post date:** [January 31, 2007, 10:56pm UTC](https://www.ruby-forum.com/t/transpose/84059/1 "2007-01-31T22:56:12Z")

</div>

This occurred to me while lying sick in bed…

robert@fussel /cygdrive/c/Temp  
$ ruby dd.rb  
[[“foo”, “bar”, “baz”, “biz”], [1, 2, 3, 4], [100, 200, 300, 400]]  
[[“foo”, 1, 100], [“bar”, 2, 200], [“baz”, 3, 300], [“biz”, 4, 400]]

robert@fussel /cygdrive/c/Temp  
$ cat dd.rb

require ‘enumerator’  
require ‘pp’

def transpose(a)  
a.inject {|aa,b| aa.to\_enum(:zip, b)}.inject([]){|aa,b| aa \<\<  
b.flatten}  
end

a = [  
%w{foo bar baz biz},  
[1,2,3,4],  
[100,200,300,400],  
]

pp a, transpose(a)

Did we have this before?

Whatever…

robert

---

<div class="post-metadata">

**Author:** ![robkuz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/34f0e0/32.png) [@robkuz](https://www.ruby-forum.com/u/robkuz)\
**Post date:** [January 31, 2007, 10:59pm UTC](https://www.ruby-forum.com/t/transpose/84059/2 "2007-01-31T22:59:12Z")

</div>

On 1/31/07, Robert K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> [100,200,300,400],  
> ]
> 
> pp a, transpose(a)
> 
> Did we have this before?
> 
> Whatever…

a = [  
%w{foo bar baz biz},  
[1,2,3,4],  
[100,200,300,400],  
]

a.transpose

Blessings,  
TwP

---

<div class="post-metadata">

**Author:** ![robkuz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/34f0e0/32.png) [@robkuz](https://www.ruby-forum.com/u/robkuz)\
**Post date:** [January 31, 2007, 11:00pm UTC](https://www.ruby-forum.com/t/transpose/84059/3 "2007-01-31T23:00:12Z")

</div>

Robert,

It’s actually a built in method on array.

a.transpose will get you the same result.  
Nice solution, however.

–Tyler

---

<div class="post-metadata">

**Author:** ![robkuz](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/34f0e0/32.png) [@robkuz](https://www.ruby-forum.com/u/robkuz)\
**Post date:** [January 31, 2007, 11:01pm UTC](https://www.ruby-forum.com/t/transpose/84059/4 "2007-01-31T23:01:12Z")

</div>

On Thu, 1 Feb 2007, Robert K. wrote:

> This occurred to me while lying sick in bed…

**sick** being the operative word!

😉

-a
