library("dbreg")
library(DBI)
library(duckdb)
con = dbConnect(duckdb())
duckdb_register(con, "test", data.frame(x1 = 1:3, x2 = c("a", "b", "c")))
sql_model_matrix(~ x1 + x2, con, "test")$select_exprs
[1] "x1"
[2] "CASE WHEN x2 = 'b' THEN 1.0 ELSE 0.0 END"
[3] "CASE WHEN x2 = 'c' THEN 1.0 ELSE 0.0 END"
$col_names
[1] "x1" "x2b" "x2c"
$factor_levels
$factor_levels$x2
[1] "a" "b" "c"
sql_model_matrix(~ x1:x2, con, "test")$select_exprs
[1] "(x1) * (CASE WHEN x2 = 'a' THEN 1.0 ELSE 0.0 END)"
[2] "(x1) * (CASE WHEN x2 = 'b' THEN 1.0 ELSE 0.0 END)"
[3] "(x1) * (CASE WHEN x2 = 'c' THEN 1.0 ELSE 0.0 END)"
$col_names
[1] "x1_x_x2a" "x1_x_x2b" "x1_x_x2c"
$factor_levels
$factor_levels$x2
[1] "a" "b" "c"
sql_model_matrix(~ x1:x2, con, "test", sep = ":")$select_exprs
[1] "(x1) * (CASE WHEN x2 = 'a' THEN 1.0 ELSE 0.0 END)"
[2] "(x1) * (CASE WHEN x2 = 'b' THEN 1.0 ELSE 0.0 END)"
[3] "(x1) * (CASE WHEN x2 = 'c' THEN 1.0 ELSE 0.0 END)"
$col_names
[1] "x1:x2a" "x1:x2b" "x1:x2c"
$factor_levels
$factor_levels$x2
[1] "a" "b" "c"
dbDisconnect(con)