title: Something like expand.grid on a list of lists
body: <p>I have three text documents stored as a list of lists called "dlist":</p>
  
  <pre><code>dlist &lt;- structure(list(name = c("a", "b", "c"), text = list(c("the", "quick", "brown"), c("fox", "jumps", "over", "the"), c("lazy", "dog"))), .Names = c("name", "text"))
  </code></pre>
  
  <p>In my head I find it helpful to picture dlist like this:</p>
  
  <pre><code>   name  text
  1  a     c("the", "quick", "brown")
  2  b     c("fox", "jumps", "over", "the")
  3  c     c("lazy", "dog")
  </code></pre>
  
  <p>How can this be manipulated be like below?  The idea is to graph it, so something that can be melted for ggplot2 would be good.</p>
  
  <pre><code>  name  text
  1    a   the
  2    a quick
  3    a brown
  4    b   fox
  5    b jumps
  6    b  over
  7    b   the
  8    c  lazy
  9    c   dog
  </code></pre>
  
  <p>That's one row per word, giving both the word and its parent document.</p>
  
  <p>I have tried:</p>
  
  <pre><code>&gt; expand.grid(dlist)
    name                  text
  1    a     the, quick, brown
  2    b     the, quick, brown
  3    c     the, quick, brown
  4    a fox, jumps, over, the
  5    b fox, jumps, over, the
  6    c fox, jumps, over, the
  7    a             lazy, dog
  8    b             lazy, dog
  9    c             lazy, dog
  
  &gt; sapply(seq(1,3), function(x) (expand.grid(dlist$name[[x]], dlist$text[[x]])))
       [,1]     [,2]     [,3]    
  Var1 factor,3 factor,4 factor,2
  Var2 factor,3 factor,4 factor,2
  
  unlist(dlist)
    name1   name2   name3   text1   text2   text3   text4 
      "a"     "b"     "c"   "the" "quick" "brown"   "fox" 
    text5   text6   text7   text8   text9 
  "jumps"  "over"   "the"  "lazy"   "dog"
  
  &gt; sapply(seq(1,3), function(x) (cbind(dlist$name[[x]], dlist$text[[x]])))
  [[1]]
       [,1] [,2]   
  [1,] "a"  "the"  
  [2,] "a"  "quick"
  [3,] "a"  "brown"
  
  [[2]]
       [,1] [,2]   
  [1,] "b"  "fox"  
  [2,] "b"  "jumps"
  [3,] "b"  "over" 
  [4,] "b"  "the"  
  
  [[3]]
       [,1] [,2]  
  [1,] "c"  "lazy"
  [2,] "c"  "dog" 
  </code></pre>
  
  <p>It's fair to say I'm befuddled by the various apply and plyr functions and don't really know where to start.  I've never seen a result like in the "sapply" attempt above, and don't understand it.</p>