criar uma fórmula em um ambiente data.table em R

Eu gostaria de executar uma regressão dentro de umdata.table. oformula precisa ser construído dinamicamente. Eu tentei o seguinte método:

x = data.table(a=1:20, b=20:1, id=1:5)
> x[,as.list(coef(lm(as.formula("a ~ b")))),by=id]
  Error in eval(expr, envir, enclos) : object 'a' not found

Como se especifica o ambiente para ser aquele dos dados reais? Onde a avaliação ocorre?

EDIT: Eu percebo que posso fazer lm (a ~ b). Eu preciso que a fórmula seja dinâmica, então é construída como uma string de caracteres. Dinamicamente, quero dizer que a fórmula pode serpaste0(var_1, "~", var_2) Ondevar_1 = a evar_2 = b

Aqui está uma solução que acho que podemos fazer melhor:

txt = parse(text="as.list(coef(lm(a ~ b)))")
> x[,eval(txt),by=id]
  id (Intercept)  b
  1:  1          21 -1
  2:  2          21 -1
  3:  3          21 -1
  4:  4          21 -1
  5:  5          21 -1

questionAnswers(1)

yourAnswerToTheQuestion