Attribuer plusieurs colonnes à l'aide de := dans les données.table, par groupe

Quelle est la meilleure façon d'affecter à plusieurs colonnes à l'aide data.table? Par exemple:

f <- function(x) {c("hi", "hello")}
x <- data.table(id = 1:10)

Je voudrais faire quelque chose comme ceci (bien sûr, cette syntaxe est incorrecte):

x[ , (col1, col2) := f(), by = "id"]

Et pour prolonger, je risque d'avoir beaucoup de colonnes avec les noms stockés dans une variable (disons col_names) et je voudrais faire:

x[ , col_names := another_f(), by = "id", with = FALSE]

Quelle est la bonne façon de faire quelque chose comme cela?

  • Cela ressemble comme il a été répondu: stackoverflow.com/questions/11308754/...
  • Alex, la réponse est proche, mais il ne semble pas fonctionner en combinaison avec by comme @Christoph_J est correct de dire. Lien à votre question, ajouté à FR#2120 "Drop besoin avec=FALSE pour LHS de :=", donc il ne sera pas oublié de le revoir.
  • Pour être clair, f() est une fonction retournant plusieurs valeurs, une pour chacun de vos colonnes.
InformationsquelleAutor Alex | 2012-07-27