R Under development (unstable) (2025-01-28 r87664 ucrt) -- "Unsuffered Consequences" Copyright (C) 2025 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > > library("basefun") Loading required package: variables > > n <- 100 > x <- runif(n) > y <- runif(n) > g <- gl(4, n / 4) > d <- data.frame(y = y, x = x, g = g) > de <- d[-(1:nrow(d)),] > > b1 <- as.basis(~ x + g, data = d) > b2 <- Bernstein_basis(numeric_var("y", support = c(0.0, 1.0)), + order = 4, ui = "incre") > > b12 <- b(b1 = b1, b2 = b2) > c12 <- c(b1 = b1, b2 = b2) > > X1 <- model.matrix(b(b2 = b2, b1 = b1), data = d) > X2 <- model.matrix(b(b2 = b2, b1 = b1, sumconstr = TRUE), data = d) > all.equal(X1[,], X2[,]) [1] TRUE > attr(X1, "constraint")$ui 45 x 25 sparse Matrix of class "dgCMatrix" [1,] -1 1 . . . . . . . . . . . . . . . . . . . . . . . [2,] . -1 1 . . . . . . . . . . . . . . . . . . . . . . [3,] . . -1 1 . . . . . . . . . . . . . . . . . . . . . [4,] . . . -1 1 . . . . . . . . . . . . . . . . . . . . [5,] . . . . . -1 1 . . . . . . . . . . . . . . . . . . [6,] . . . . . . -1 1 . . . . . . . . . . . . . . . . . [7,] . . . . . . . -1 1 . . . . . . . . . . . . . . . . [8,] . . . . . . . . -1 1 . . . . . . . . . . . . . . . [9,] . . . . . . . . . . -1 1 . . . . . . . . . . . . . [10,] . . . . . . . . . . . -1 1 . . . . . . . . . . . . [11,] . . . . . . . . . . . . -1 1 . . . . . . . . . . . [12,] . . . . . . . . . . . . . -1 1 . . . . . . . . . . [13,] . . . . . . . . . . . . . . . -1 1 . . . . . . . . [14,] . . . . . . . . . . . . . . . . -1 1 . . . . . . . [15,] . . . . . . . . . . . . . . . . . -1 1 . . . . . . [16,] . . . . . . . . . . . . . . . . . . -1 1 . . . . . [17,] . . . . . . . . . . . . . . . . . . . . -1 1 . . . [18,] . . . . . . . . . . . . . . . . . . . . . -1 1 . . [19,] . . . . . . . . . . . . . . . . . . . . . . -1 1 . [20,] . . . . . . . . . . . . . . . . . . . . . . . -1 1 [21,] 1 . . . . . . . . . . . . . . . . . . . . . . . . [22,] . 1 . . . . . . . . . . . . . . . . . . . . . . . [23,] . . 1 . . . . . . . . . . . . . . . . . . . . . . [24,] . . . 1 . . . . . . . . . . . . . . . . . . . . . [25,] . . . . 1 . . . . . . . . . . . . . . . . . . . . [26,] . . . . . 1 . . . . . . . . . . . . . . . . . . . [27,] . . . . . . 1 . . . . . . . . . . . . . . . . . . [28,] . . . . . . . 1 . . . . . . . . . . . . . . . . . [29,] . . . . . . . . 1 . . . . . . . . . . . . . . . . [30,] . . . . . . . . . 1 . . . . . . . . . . . . . . . [31,] . . . . . . . . . . 1 . . . . . . . . . . . . . . [32,] . . . . . . . . . . . 1 . . . . . . . . . . . . . [33,] . . . . . . . . . . . . 1 . . . . . . . . . . . . [34,] . . . . . . . . . . . . . 1 . . . . . . . . . . . [35,] . . . . . . . . . . . . . . 1 . . . . . . . . . . [36,] . . . . . . . . . . . . . . . 1 . . . . . . . . . [37,] . . . . . . . . . . . . . . . . 1 . . . . . . . . [38,] . . . . . . . . . . . . . . . . . 1 . . . . . . . [39,] . . . . . . . . . . . . . . . . . . 1 . . . . . . [40,] . . . . . . . . . . . . . . . . . . . 1 . . . . . [41,] . . . . . . . . . . . . . . . . . . . . 1 . . . . [42,] . . . . . . . . . . . . . . . . . . . . . 1 . . . [43,] . . . . . . . . . . . . . . . . . . . . . . 1 . . [44,] . . . . . . . . . . . . . . . . . . . . . . . 1 . [45,] . . . . . . . . . . . . . . . . . . . . . . . . 1 > attr(X2, "constraint")$ui 32 x 25 sparse Matrix of class "dgCMatrix" [1,] -1 1 . . . -0.0005862615 0.0005862615 . . [2,] . -1 1 . . . -0.0005862615 0.0005862615 . [3,] . . -1 1 . . . -0.0005862615 0.0005862615 [4,] . . . -1 1 . . . -0.0005862615 [5,] -1 1 . . . -0.9913621179 0.9913621179 . . [6,] . -1 1 . . . -0.9913621179 0.9913621179 . [7,] . . -1 1 . . . -0.9913621179 0.9913621179 [8,] . . . -1 1 . . . -0.9913621179 [9,] -1 1 . . . -0.0005862615 0.0005862615 . . [10,] . -1 1 . . . -0.0005862615 0.0005862615 . [11,] . . -1 1 . . . -0.0005862615 0.0005862615 [12,] . . . -1 1 . . . -0.0005862615 [13,] -1 1 . . . -0.9913621179 0.9913621179 . . [14,] . -1 1 . . . -0.9913621179 0.9913621179 . [15,] . . -1 1 . . . -0.9913621179 0.9913621179 [16,] . . . -1 1 . . . -0.9913621179 [17,] -1 1 . . . -0.0005862615 0.0005862615 . . [18,] . -1 1 . . . -0.0005862615 0.0005862615 . [19,] . . -1 1 . . . -0.0005862615 0.0005862615 [20,] . . . -1 1 . . . -0.0005862615 [21,] -1 1 . . . -0.9913621179 0.9913621179 . . [22,] . -1 1 . . . -0.9913621179 0.9913621179 . [23,] . . -1 1 . . . -0.9913621179 0.9913621179 [24,] . . . -1 1 . . . -0.9913621179 [25,] -1 1 . . . -0.0005862615 0.0005862615 . . [26,] . -1 1 . . . -0.0005862615 0.0005862615 . [27,] . . -1 1 . . . -0.0005862615 0.0005862615 [28,] . . . -1 1 . . . -0.0005862615 [29,] -1 1 . . . -0.9913621179 0.9913621179 . . [30,] . -1 1 . . . -0.9913621179 0.9913621179 . [31,] . . -1 1 . . . -0.9913621179 0.9913621179 [32,] . . . -1 1 . . . -0.9913621179 [1,] . . . . . . . . . . . . . . . . [2,] . . . . . . . . . . . . . . . . [3,] . . . . . . . . . . . . . . . . [4,] 0.0005862615 . . . . . . . . . . . . . . . [5,] . . . . . . . . . . . . . . . . [6,] . . . . . . . . . . . . . . . . [7,] . . . . . . . . . . . . . . . . [8,] 0.9913621179 . . . . . . . . . . . . . . . [9,] . -1 1 . . . . . . . . . . . . . [10,] . . -1 1 . . . . . . . . . . . . [11,] . . . -1 1 . . . . . . . . . . . [12,] 0.0005862615 . . . -1 1 . . . . . . . . . . [13,] . -1 1 . . . . . . . . . . . . . [14,] . . -1 1 . . . . . . . . . . . . [15,] . . . -1 1 . . . . . . . . . . . [16,] 0.9913621179 . . . -1 1 . . . . . . . . . . [17,] . . . . . . -1 1 . . . . . . . . [18,] . . . . . . . -1 1 . . . . . . . [19,] . . . . . . . . -1 1 . . . . . . [20,] 0.0005862615 . . . . . . . . -1 1 . . . . . [21,] . . . . . . -1 1 . . . . . . . . [22,] . . . . . . . -1 1 . . . . . . . [23,] . . . . . . . . -1 1 . . . . . . [24,] 0.9913621179 . . . . . . . . -1 1 . . . . . [25,] . . . . . . . . . . . -1 1 . . . [26,] . . . . . . . . . . . . -1 1 . . [27,] . . . . . . . . . . . . . -1 1 . [28,] 0.0005862615 . . . . . . . . . . . . . -1 1 [29,] . . . . . . . . . . . -1 1 . . . [30,] . . . . . . . . . . . . -1 1 . . [31,] . . . . . . . . . . . . . -1 1 . [32,] 0.9913621179 . . . . . . . . . . . . . -1 1 > > dim(model.matrix(b12, d)) [1] 100 25 > # nparm(b12, d) > dim(model.matrix(c12, d)) [1] 100 10 > # nparm(c12, d) > > tmp <- c(b12 = b12, c12 = c12) Warning message: In c.bases(b12 = b12, c12 = c12) : more than one basis contains an intercept term > class(tmp) [1] "cbind_bases" "bases" > dim(model.matrix(tmp, d)) [1] 100 35 > # nparm(tmp, d) > > xd <- data.frame(x = x) > b <- as.basis(~ scale(x), data = xd) > stopifnot(all.equal(b(xd)[1:10,], b(xd[1:10,,drop = FALSE])[,])) > > ### optionally return Matrix object > if (require("Matrix")) { + d <- data.frame(x = gl(100, 100)) + M <- model.matrix(as.basis(~ x, data = d, Matrix = TRUE), d) + stopifnot(inherits(M, "Matrix")) + } Loading required package: Matrix > > ### ordered factors, non-sparse > x <- gl(5, 1, ordered = TRUE) > (M <- model.matrix(as.basis(x), data = data.frame(x = x))) %*% 1:4 [,1] 1 1 2 2 3 3 4 4 5 0 > stopifnot(inherits(M, "matrix")) > ### sparse > x <- gl(5, 1, ordered = TRUE) > (M <- model.matrix(as.basis(x, sparse = TRUE), data = data.frame(x = x))) %*% 1:4 5 x 1 Matrix of class "dgeMatrix" [,1] 1 1 2 2 3 3 4 4 5 0 > stopifnot(inherits(M, "Matrix")) > > proc.time() user system elapsed 0.84 0.14 0.96