[R] transposing a list of vectors

Michael Friendly friendly at yorku.ca
Fri Jan 15 14:09:12 CET 2010


I have a list of vectors, all forced to be the same length:

testlist <- list(
    shape=c(0, 0, 2),
  cell.fill=c("red","blue","green"),
    back.fill=rep("white",3),
    scale.max=rep(100,3)
    )
 > str(testlist)
List of 4
 $ shape    : num [1:3] 0 0 2
 $ cell.fill: chr [1:3] "red" "blue" "green"
 $ back.fill: chr [1:3] "white" "white" "white"
 $ scale.max: num [1:3] 100 100 100
 >

I need to 'transpose' them into a list of lists with named values like so:

wanted <- list(
    list(shape=0, cell.fill="red", back.fill="white", scale.max=100),
    list(shape=0, cell.fill="blue", back.fill="white", scale.max=100),
    list(shape=2, cell.fill="green", back.fill="white", scale.max=100)
    )
 > str(wanted)
List of 3
 $ :List of 4
  ..$ shape    : num 0
  ..$ cell.fill: chr "red"
  ..$ back.fill: chr "white"
  ..$ scale.max: num 3
 $ :List of 4
  ..$ shape    : num 0
  ..$ cell.fill: chr "blue"
  ..$ back.fill: chr "white"
  ..$ scale.max: num 3
 $ :List of 4
  ..$ shape    : num 2
  ..$ cell.fill: chr "green"
  ..$ back.fill: chr "white"
  ..$ scale.max: num 3
 >

How can I do this in general?

-- 
Michael Friendly     Email: friendly AT yorku DOT ca 
Professor, Psychology Dept.
York University      Voice: 416 736-5115 x66249 Fax: 416 736-5814
4700 Keele Street    http://www.math.yorku.ca/SCS/friendly.html
Toronto, ONT  M3J 1P3 CANADA



More information about the R-help mailing list