tutorial tables style formatstyle examples data r environment data.table

r - tables - style datatable shiny



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

Me gustaría ejecutar una regresión dentro de una data.table . La formula necesita ser construida 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 ser paste0(var_1, "~", var_2) donde var_1 = a y var_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


lm puede aceptar una cadena de caracteres como la fórmula, así que .SD con .SD esta manera:

> x[, as.list(coef(lm("a ~ b", .SD))), 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