title: Assign multiple columns using := in data.table, by group
body: <p>What is the best way to assign to multiple columns using <code>data.table</code>? For example:</p>
  
  <pre><code>f &lt;- function(x) {c("hi", "hello")}
  x &lt;- data.table(id = 1:10)
  </code></pre>
  
  <p>I would like to do something like this (of course this syntax is incorrect):</p>
  
  <pre><code>x[ , (col1, col2) := f(), by = "id"]
  </code></pre>
  
  <p>And to extend that, I may have many columns with names stored in a variable (say <code>col_names</code>) and I would like to do:</p>
  
  <pre><code>x[ , col_names := another_f(), by = "id", with = FALSE]
  </code></pre>
  
  <p>What is the correct way to do something like this?  </p>