Adicione várias colunas ao R data.table em uma chamada de função?

Eu tenho uma função que retorna dois valores em uma lista. Ambos os valores precisam ser adicionados a um data.table em duas novas colunas. A avaliação da função é dispendiosa, portanto, gostaria de evitar a necessidade de calcular a função duas vezes. Aqui está o exemplo:

library(data.table)
example(data.table)
DT
   x y  v
1: a 1 42
2: a 3 42
3: a 6 42
4: b 1  4
5: b 3  5
6: b 6  6
7: c 1  7
8: c 3  8
9: c 6  9

Aqui está um exemplo da minha função. Lembre-se que eu disse que é um cálculo caro, além disso, não há como deduzir um valor de retorno dos outros valores dados (como no exemplo abaixo):

myfun <- function (y, v) 
{
ret1 = y + v
ret2 = y - v
return(list(r1 = ret1, r2 = ret2))
}

Aqui está o meu jeito de adicionar duas colunas em uma declaração. Essa pessoa precisa chamar myfun duas vezes, no entanto:

DT[,new1:=myfun(y,v)$r1][,new2:=myfun(y,v)$r2]

   x y  v new1 new2
1: a 1 42   43  -41
2: a 3 42   45  -39
3: a 6 42   48  -36
4: b 1  4    5   -3
5: b 3  5    8   -2
6: b 6  6   12    0
7: c 1  7    8   -6
8: c 3  8   11   -5
9: c 6  9   15   -3

Alguma sugestão sobre como fazer isso? Eu poderia salvarr2 em um ambiente separado cada vez que eu chamo myfun, eu só preciso de uma maneira de adicionar duas colunas por referência de cada vez.

questionAnswers(5)

yourAnswerToTheQuestion