crear una fórmula en un entorno data.table en R

Me gustaría hacer una regresión dentro de unadata.table. losformula Necesita ser construido dinámicamente. He intentado el siguiente 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

¿Cómo se especifica que el entorno sea el de la tabla de datos reales donde se realiza la evaluación?

EDITAR: Me doy cuenta de que puedo hacer lm (a ~ b). Necesito que la fórmula sea dinámica para que se construya como una cadena de caracteres. Por dinámica me refiero a que la fórmula puede serpaste0(var_1, "~", var_2) dóndevar_1 = a yvar_2 = b

Aquí hay una solución que creo que podemos hacer mejor:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta