
R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

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.

  Natural language support but running in an English locale

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.

> pkgname <- "splines"
> source(file.path(R.home("share"), "R", "examples-header.R"))
> options(warn = 1)
> library('splines')
> 
> base::assign(".oldSearch", base::search(), pos = 'CheckExEnv')
> base::assign(".old_wd", base::getwd(), pos = 'CheckExEnv')
> cleanEx()
> nameEx("asVector")
> ### * asVector
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: asVector
> ### Title: Coerce an Object to a Vector
> ### Aliases: asVector
> ### Keywords: models
> 
> ### ** Examples
> 
> require(stats)
> ispl <- interpSpline( weight ~ height,  women )
> pred <- predict(ispl)
> class(pred)
[1] "xyVector"
> utils::str(pred)
List of 2
 $ x: num [1:51] 58 58.3 58.6 58.8 59.1 ...
 $ y: num [1:51] 115 115 116 117 117 ...
 - attr(*, "class")= chr "xyVector"
> asVector(pred)
 [1] 115.0000 115.4908 116.0170 116.6137 117.3153 118.1214 118.9894 119.8747
 [9] 120.7384 121.5787 122.4078 123.2380 124.0759 124.9181 125.7601 126.5980
[17] 127.4340 128.2735 129.1220 129.9792 130.8301 131.6572 132.4454 133.2228
[25] 134.0528 135.0000 136.1000 137.2727 138.4090 139.4026 140.2416 141.0276
[33] 141.8690 142.8564 143.9707 145.1507 146.3356 147.4868 148.6046 149.6935
[41] 150.7604 151.8353 152.9613 154.1817 155.5178 156.9329 158.3808 159.8173
[49] 161.2269 162.6180 164.0000
> 
> 
> 
> cleanEx()
> nameEx("backSpline")
> ### * backSpline
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: backSpline
> ### Title: Monotone Inverse Spline
> ### Aliases: backSpline
> ### Keywords: models
> 
> ### ** Examples
> 
> require(graphics)
> ispl <- interpSpline( women$height, women$weight )
> bspl <- backSpline( ispl )
> plot( bspl )                   # plots over the range of the knots
> points( women$weight, women$height )
> 
> 
> 
> cleanEx()
> nameEx("bs")
> ### * bs
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: bs
> ### Title: B-Spline Basis for Polynomial Splines
> ### Aliases: bs
> ### Keywords: smooth
> 
> ### ** Examples
> 
> require(stats); require(graphics)
> bs(women$height, df = 5)
                 1           2           3            4           5
 [1,] 0.000000e+00 0.000000000 0.000000000 0.000000e+00 0.000000000
 [2,] 4.534439e-01 0.059857872 0.001639942 0.000000e+00 0.000000000
 [3,] 5.969388e-01 0.203352770 0.013119534 0.000000e+00 0.000000000
 [4,] 5.338010e-01 0.376366618 0.044278426 0.000000e+00 0.000000000
 [5,] 3.673469e-01 0.524781341 0.104956268 0.000000e+00 0.000000000
 [6,] 2.001640e-01 0.595025510 0.204719388 9.110787e-05 0.000000000
 [7,] 9.110787e-02 0.566326531 0.336734694 5.830904e-03 0.000000000
 [8,] 3.125000e-02 0.468750000 0.468750000 3.125000e-02 0.000000000
 [9,] 5.830904e-03 0.336734694 0.566326531 9.110787e-02 0.000000000
[10,] 9.110787e-05 0.204719388 0.595025510 2.001640e-01 0.000000000
[11,] 0.000000e+00 0.104956268 0.524781341 3.673469e-01 0.002915452
[12,] 0.000000e+00 0.044278426 0.376366618 5.338010e-01 0.045553936
[13,] 0.000000e+00 0.013119534 0.203352770 5.969388e-01 0.186588921
[14,] 0.000000e+00 0.001639942 0.059857872 4.534439e-01 0.485058309
[15,] 0.000000e+00 0.000000000 0.000000000 0.000000e+00 1.000000000
attr(,"degree")
[1] 3
attr(,"knots")
33.33333% 66.66667% 
 62.66667  67.33333 
attr(,"Boundary.knots")
[1] 58 72
attr(,"intercept")
[1] FALSE
attr(,"class")
[1] "bs"     "basis"  "matrix"
> summary(fm1 <- lm(weight ~ bs(height, df = 5), data = women))

Call:
lm(formula = weight ~ bs(height, df = 5), data = women)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.31764 -0.13441  0.03922  0.11096  0.35086 

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)         114.8799     0.2167 530.146  < 2e-16 ***
bs(height, df = 5)1   3.4657     0.4595   7.543 3.53e-05 ***
bs(height, df = 5)2  13.0300     0.3965  32.860 1.10e-10 ***
bs(height, df = 5)3  27.6161     0.4571  60.415 4.70e-13 ***
bs(height, df = 5)4  40.8481     0.3866 105.669 3.09e-15 ***
bs(height, df = 5)5  49.1296     0.3090 158.979  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.2276 on 9 degrees of freedom
Multiple R-squared:  0.9999,	Adjusted R-squared:  0.9998 
F-statistic: 1.298e+04 on 5 and 9 DF,  p-value: < 2.2e-16

> 
> ## example of safe prediction
> plot(women, xlab = "Height (in)", ylab = "Weight (lb)")
> ht <- seq(57, 73, length.out = 200)
> lines(ht, predict(fm1, data.frame(height = ht)))
Warning in bs(height, degree = 3L, knots = c(`33.33333%` = 62.6666666666667,  :
  some 'x' values beyond boundary knots may cause ill-conditioned bases
> ## Don't show: 
> ## Consistency:
> x <- c(1:3, 5:6)
> stopifnot(identical(bs(x), bs(x, df = 3)),
+           identical(bs(x, df = 4), bs(x, df = 4, knots = NULL)), # not true till 2.15.2
+           !is.null(kk <- attr(bs(x), "knots")), # not true till 1.5.1
+           length(kk) == 0)
> ## End(Don't show)
> 
> 
> cleanEx()
> nameEx("interpSpline")
> ### * interpSpline
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: interpSpline
> ### Title: Create an Interpolation Spline
> ### Aliases: interpSpline
> ### Keywords: models
> 
> ### ** Examples
> 
> require(graphics); require(stats)
> ispl <- interpSpline( women$height, women$weight )
> ispl2 <- interpSpline( weight ~ height,  women )
> # ispl and ispl2 should be the same
> plot( predict( ispl, seq( 55, 75, length.out = 51 ) ), type = "l" )
> points( women$height, women$weight )
> plot( ispl )    # plots over the range of the knots
> points( women$height, women$weight )
> splineKnots( ispl )
 [1] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
> 
> 
> 
> cleanEx()
> nameEx("ns")
> ### * ns
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: ns
> ### Title: Generate a Basis Matrix for Natural Cubic Splines
> ### Aliases: ns
> ### Keywords: smooth
> 
> ### ** Examples
> 
> require(stats); require(graphics)
> ns(women$height, df = 5)
                 1            2           3          4             5
 [1,] 0.000000e+00 0.000000e+00  0.00000000 0.00000000  0.0000000000
 [2,] 7.592323e-03 0.000000e+00 -0.08670223 0.26010669 -0.1734044626
 [3,] 6.073858e-02 0.000000e+00 -0.15030440 0.45091320 -0.3006088020
 [4,] 2.047498e-01 6.073858e-05 -0.16778345 0.50335034 -0.3355668952
 [5,] 4.334305e-01 1.311953e-02 -0.13244035 0.39732106 -0.2648807067
 [6,] 6.256681e-01 8.084305e-02 -0.07399720 0.22199159 -0.1479943948
 [7,] 6.477162e-01 2.468416e-01 -0.02616007 0.07993794 -0.0532919575
 [8,] 4.791667e-01 4.791667e-01  0.01406302 0.02031093 -0.0135406187
 [9,] 2.468416e-01 6.477162e-01  0.09733619 0.02286023 -0.0152401533
[10,] 8.084305e-02 6.256681e-01  0.27076826 0.06324188 -0.0405213106
[11,] 1.311953e-02 4.334305e-01  0.48059836 0.12526031 -0.0524087186
[12,] 6.073858e-05 2.047498e-01  0.59541597 0.19899261  0.0007809246
[13,] 0.000000e+00 6.073858e-02  0.50097182 0.27551020  0.1627793975
[14,] 0.000000e+00 7.592323e-03  0.22461127 0.35204082  0.4157555879
[15,] 0.000000e+00 0.000000e+00 -0.14285714 0.42857143  0.7142857143
attr(,"degree")
[1] 3
attr(,"knots")
 20%  40%  60%  80% 
60.8 63.6 66.4 69.2 
attr(,"Boundary.knots")
[1] 58 72
attr(,"intercept")
[1] FALSE
attr(,"class")
[1] "ns"     "basis"  "matrix"
> summary(fm1 <- lm(weight ~ ns(height, df = 5), data = women))

Call:
lm(formula = weight ~ ns(height, df = 5), data = women)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.38333 -0.12585  0.07083  0.15401  0.30426 

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)         114.7447     0.2338  490.88  < 2e-16 ***
ns(height, df = 5)1  15.9474     0.3699   43.12 9.69e-12 ***
ns(height, df = 5)2  25.1695     0.4323   58.23 6.55e-13 ***
ns(height, df = 5)3  33.2582     0.3541   93.93 8.91e-15 ***
ns(height, df = 5)4  50.7894     0.6062   83.78 2.49e-14 ***
ns(height, df = 5)5  45.0363     0.2784  161.75  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.2645 on 9 degrees of freedom
Multiple R-squared:  0.9998,	Adjusted R-squared:  0.9997 
F-statistic:  9609 on 5 and 9 DF,  p-value: < 2.2e-16

> 
> ## To see what knots were selected
> attr(terms(fm1), "predvars")
list(weight, ns(height, knots = c(`20%` = 60.8, `40%` = 63.6, 
`60%` = 66.4, `80%` = 69.2), Boundary.knots = c(58, 72), intercept = FALSE))
> 
> ## example of safe prediction
> plot(women, xlab = "Height (in)", ylab = "Weight (lb)")
> ht <- seq(57, 73, length.out = 200) ; nD <- data.frame(height = ht)
> lines(ht, p1 <- predict(fm1, nD))
> stopifnot(all.equal(p1, predict(update(fm1, . ~
+                             splines::ns(height, df=5)), nD)))
>           # not true in R < 3.5.0
> ## Don't show: 
> ## Consistency:
> x <- c(1:3, 5:6)
> stopifnot(identical(ns(x), ns(x, df = 1)),
+           identical(ns(x, df = 2),
+                     ns(x, df = 2, knots = NULL)), # not true till 2.15.2
+           !is.null(kk <- attr(ns(x), "knots")), # not true till 1.5.1
+           length(kk) == 0)
> ## End(Don't show)
> 
> 
> 
> cleanEx()
> nameEx("periodicSpline")
> ### * periodicSpline
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: periodicSpline
> ### Title: Create a Periodic Interpolation Spline
> ### Aliases: periodicSpline
> ### Keywords: models
> 
> ### ** Examples
> 
> require(graphics); require(stats)
> xx <- seq( -pi, pi, length.out = 16 )[-1]
> yy <- sin( xx )
> frm <- data.frame( xx, yy )
> pispl <- periodicSpline( xx, yy, period = 2 * pi)
> pispl2 <- periodicSpline( yy ~ xx, frm, period = 2 * pi )
> stopifnot(all.equal(pispl, pispl2))  # pispl and pispl2 are the same
> 
> plot( pispl )          # displays over one period
> points( yy ~ xx, col = "brown")
> plot( predict( pispl, seq(-3*pi, 3*pi, length.out = 101) ), type = "l" )
> 
> 
> 
> cleanEx()
> nameEx("polySpline")
> ### * polySpline
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: polySpline
> ### Title: Piecewise Polynomial Spline Representation
> ### Aliases: polySpline as.polySpline
> ### Keywords: models
> 
> ### ** Examples
> 
> require(graphics)
> ispl <- polySpline(interpSpline( weight ~ height,  women, bSpline = TRUE))
> ## IGNORE_RDIFF_BEGIN
> print( ispl )   # print the piecewise polynomial representation
polynomial representation of spline for weight ~ height
   constant   linear   quadratic       cubic
58      115 1.731918  0.00000000  0.26808191
59      117 2.536164  0.80424574 -0.34040957
60      120 3.123427 -0.21698298  0.09355638
61      123 2.970130  0.06368616 -0.03381595
62      126 2.996054 -0.03776168  0.04170740
63      129 3.045653  0.08736054 -0.13301367
64      132 2.821333 -0.31168048  0.49034728
65      135 3.669014  1.15936136 -0.82837545
66      139 3.502610 -1.32576498  0.82315452
67      142 3.320544  1.14369857 -0.46424262
68      146 4.215213 -0.24902928  0.03381595
69      150 3.818603 -0.14758144  0.32897883
70      154 4.510376  0.83935505 -0.34973127
71      159 5.139893 -0.20983876  0.06994625
72      164 4.930054  0.00000000  0.00000000
> ## IGNORE_RDIFF_END
> plot( ispl )    # plots over the range of the knots
> points( women$height, women$weight )
> 
> 
> 
> cleanEx()
> nameEx("predict.bSpline")
> ### * predict.bSpline
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: predict.bSpline
> ### Title: Evaluate a Spline at New Values of x
> ### Aliases: predict.bSpline predict.nbSpline predict.pbSpline
> ###   predict.npolySpline predict.ppolySpline
> ### Keywords: models
> 
> ### ** Examples
> 
> require(graphics); require(stats)
> ispl <- interpSpline( weight ~ height,  women )
> opar <- par(mfrow = c(2, 2), las = 1)
> plot(predict(ispl, nseg = 201),     # plots over the range of the knots
+      main = "Original data with interpolating spline", type = "l",
+      xlab = "height", ylab = "weight")
> points(women$height, women$weight, col = 4)
> plot(predict(ispl, nseg = 201, deriv = 1),
+      main = "First derivative of interpolating spline", type = "l",
+      xlab = "height", ylab = "weight")
> plot(predict(ispl, nseg = 201, deriv = 2),
+      main = "Second derivative of interpolating spline", type = "l",
+      xlab = "height", ylab = "weight")
> plot(predict(ispl, nseg = 401, deriv = 3),
+      main = "Third derivative of interpolating spline", type = "l",
+      xlab = "height", ylab = "weight")
> par(opar)
> 
> 
> 
> graphics::par(get("par.postscript", pos = 'CheckExEnv'))
> cleanEx()
> nameEx("predict.bs")
> ### * predict.bs
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: predict.bs
> ### Title: Evaluate a Spline Basis
> ### Aliases: predict.bs predict.ns
> ### Keywords: smooth
> 
> ### ** Examples
> 
> require(stats)
> basis <- ns(women$height, df = 5)
> newX <- seq(58, 72, length.out = 51)
> # evaluate the basis at the new data
> predict(basis, newX)
                 1            2            3          4            5
 [1,] 0.0000000000 0.0000000000  0.000000000 0.00000000  0.000000000
 [2,] 0.0001666667 0.0000000000 -0.025270112 0.07581034 -0.050540224
 [3,] 0.0013333333 0.0000000000 -0.050033132 0.15009940 -0.100066264
 [4,] 0.0045000000 0.0000000000 -0.073781966 0.22134590 -0.147563933
 [5,] 0.0106666667 0.0000000000 -0.096009523 0.28802857 -0.192019047
 [6,] 0.0208333333 0.0000000000 -0.116208710 0.34862613 -0.232417420
 [7,] 0.0360000000 0.0000000000 -0.133872434 0.40161730 -0.267744868
 [8,] 0.0571666667 0.0000000000 -0.148493603 0.44548081 -0.296987205
 [9,] 0.0853333333 0.0000000000 -0.159565123 0.47869537 -0.319130247
[10,] 0.1215000000 0.0000000000 -0.166579904 0.49973971 -0.333159807
[11,] 0.1666666667 0.0000000000 -0.169030851 0.50709255 -0.338061702
[12,] 0.2211666667 0.0001666667 -0.166622161 0.49986648 -0.333244323
[13,] 0.2826666667 0.0013333333 -0.159903185 0.47970955 -0.319806370
[14,] 0.3481666667 0.0045000000 -0.149634561 0.44890368 -0.299269122
[15,] 0.4146666667 0.0106666667 -0.136576928 0.40973078 -0.273153855
[16,] 0.4791666667 0.0208333333 -0.121490924 0.36447277 -0.242981848
[17,] 0.5386666667 0.0360000000 -0.105137189 0.31541157 -0.210274379
[18,] 0.5901666667 0.0571666667 -0.088276362 0.26482909 -0.176552724
[19,] 0.6306666667 0.0853333333 -0.071669081 0.21500724 -0.143338162
[20,] 0.6571666667 0.1215000000 -0.056075985 0.16822795 -0.112151970
[21,] 0.6666666667 0.1666666667 -0.042257713 0.12677314 -0.084515425
[22,] 0.6571666667 0.2211666667 -0.030651111 0.09245333 -0.061635555
[23,] 0.6306666667 0.2826666667 -0.020397854 0.06519356 -0.043462374
[24,] 0.5901666667 0.3481666667 -0.010315824 0.04444747 -0.029631648
[25,] 0.5386666667 0.4146666667  0.000777096 0.02966871 -0.019779141
[26,] 0.4791666667 0.4791666667  0.014063024 0.02031093 -0.013540619
[27,] 0.4146666667 0.5386666667  0.030724078 0.01582777 -0.010551844
[28,] 0.3481666667 0.5901666667  0.051942375 0.01567287 -0.010448583
[29,] 0.2826666667 0.6306666667  0.078900034 0.01929990 -0.012866600
[30,] 0.2211666667 0.6571666667  0.112779171 0.02616249 -0.017441658
[31,] 0.1666666667 0.6666666667  0.154761905 0.03571429 -0.023809524
[32,] 0.1215000000 0.6571666667  0.205345238 0.04746429 -0.031476190
[33,] 0.0853333333 0.6306666667  0.262285714 0.06114286 -0.039428571
[34,] 0.0571666667 0.5901666667  0.322654762 0.07653571 -0.046523810
[35,] 0.0360000000 0.5386666667  0.383523810 0.09342857 -0.051619048
[36,] 0.0208333333 0.4791666667  0.441964286 0.11160714 -0.053571429
[37,] 0.0106666667 0.4146666667  0.495047619 0.13085714 -0.051238095
[38,] 0.0045000000 0.3481666667  0.539845238 0.15096429 -0.043476190
[39,] 0.0013333333 0.2826666667  0.573428571 0.17171429 -0.029142857
[40,] 0.0001666667 0.2211666667  0.592869048 0.19289286 -0.007095238
[41,] 0.0000000000 0.1666666667  0.595238095 0.21428571  0.023809524
[42,] 0.0000000000 0.1215000000  0.578428571 0.23571429  0.064357143
[43,] 0.0000000000 0.0853333333  0.543619048 0.25714286  0.113904762
[44,] 0.0000000000 0.0571666667  0.492809524 0.27857143  0.171452381
[45,] 0.0000000000 0.0360000000  0.428000000 0.30000000  0.236000000
[46,] 0.0000000000 0.0208333333  0.351190476 0.32142857  0.306547619
[47,] 0.0000000000 0.0106666667  0.264380952 0.34285714  0.382095238
[48,] 0.0000000000 0.0045000000  0.169571429 0.36428571  0.461642857
[49,] 0.0000000000 0.0013333333  0.068761905 0.38571429  0.544190476
[50,] 0.0000000000 0.0001666667 -0.036047619 0.40714286  0.628738095
[51,] 0.0000000000 0.0000000000 -0.142857143 0.42857143  0.714285714
attr(,"degree")
[1] 3
attr(,"knots")
 20%  40%  60%  80% 
60.8 63.6 66.4 69.2 
attr(,"Boundary.knots")
[1] 58 72
attr(,"intercept")
[1] FALSE
attr(,"class")
[1] "ns"     "basis"  "matrix"
> 
> 
> 
> cleanEx()
> nameEx("splineDesign")
> ### * splineDesign
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: splineDesign
> ### Title: Design Matrix for B-splines
> ### Aliases: splineDesign spline.des
> ### Keywords: models
> 
> ### ** Examples
> 
> require(graphics)
> splineDesign(knots = 1:10, x = 4:7)
          [,1]      [,2]      [,3]      [,4]      [,5]      [,6]
[1,] 0.1666667 0.6666667 0.1666667 0.0000000 0.0000000 0.0000000
[2,] 0.0000000 0.1666667 0.6666667 0.1666667 0.0000000 0.0000000
[3,] 0.0000000 0.0000000 0.1666667 0.6666667 0.1666667 0.0000000
[4,] 0.0000000 0.0000000 0.0000000 0.1666667 0.6666667 0.1666667
> splineDesign(knots = 1:10, x = 4:7, derivs = 1)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,] -0.5  0.0  0.5  0.0  0.0  0.0
[2,]  0.0 -0.5  0.0  0.5  0.0  0.0
[3,]  0.0  0.0 -0.5  0.0  0.5  0.0
[4,]  0.0  0.0  0.0 -0.5  0.0  0.5
> ## visualize band structure
> 
> knots <- c(1,1.8,3:5,6.5,7,8.1,9.2,10)  # 10 => 10-4 = 6 Basis splines
> x <- seq(min(knots)-1, max(knots)+1, length.out = 501)
> bb <- splineDesign(knots, x = x, outer.ok = TRUE)
> 
> plot(range(x), c(0,1), type = "n", xlab = "x", ylab = "",
+      main =  "B-splines - sum to 1 inside inner knots")
> mtext(expression(B[j](x) *"  and "* sum(B[j](x), j == 1, 6)), adj = 0)
> abline(v = knots, lty = 3, col = "light gray")
> abline(v = knots[c(4,length(knots)-3)], lty = 3, col = "gray10")
> lines(x, rowSums(bb), col = "gray", lwd = 2)
> matlines(x, bb, ylim = c(0,1), lty = 1)
> 
> 
> 
> cleanEx()
> nameEx("splineKnots")
> ### * splineKnots
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: splineKnots
> ### Title: Knot Vector from a Spline
> ### Aliases: splineKnots
> ### Keywords: models
> 
> ### ** Examples
> 
> ispl <- interpSpline( weight ~ height, women )
> splineKnots( ispl )
 [1] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
> 
> 
> 
> cleanEx()
> nameEx("splineOrder")
> ### * splineOrder
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: splineOrder
> ### Title: Determine the Order of a Spline
> ### Aliases: splineOrder
> ### Keywords: models
> 
> ### ** Examples
> 
> splineOrder( interpSpline( weight ~ height, women ) )
[1] 4
> 
> 
> 
> cleanEx()
> nameEx("xyVector")
> ### * xyVector
> 
> flush(stderr()); flush(stdout())
> 
> ### Name: xyVector
> ### Title: Construct an 'xyVector' Object
> ### Aliases: xyVector
> ### Keywords: models
> 
> ### ** Examples
> 
> require(stats); require(graphics)
> ispl <- interpSpline( weight ~ height, women )
> weights <- predict( ispl, seq( 55, 75, length.out = 51 ))
> class( weights )
[1] "xyVector"
> plot( weights, type = "l", xlab = "height", ylab = "weight" )
> points( women$height, women$weight )
> weights
$x
 [1] 55.0 55.4 55.8 56.2 56.6 57.0 57.4 57.8 58.2 58.6 59.0 59.4 59.8 60.2 60.6
[16] 61.0 61.4 61.8 62.2 62.6 63.0 63.4 63.8 64.2 64.6 65.0 65.4 65.8 66.2 66.6
[31] 67.0 67.4 67.8 68.2 68.6 69.0 69.4 69.8 70.2 70.6 71.0 71.4 71.8 72.2 72.6
[46] 73.0 73.4 73.8 74.2 74.6 75.0

$y
 [1] 109.8042 110.4970 111.1898 111.8825 112.5753 113.2681 113.9608 114.6536
 [9] 115.3485 116.0971 117.0000 118.1214 119.3694 120.6168 121.8162 123.0000
[17] 124.1961 125.3995 126.5980 127.7930 129.0000 130.2237 131.4243 132.5557
[25] 133.6865 135.0000 136.6001 138.2531 139.6541 140.8021 142.0000 143.4815
[33] 145.1507 146.8334 148.4468 150.0000 151.5249 153.1289 154.9329 156.9329
[41] 159.0000 161.0269 163.0134 164.9860 166.9580 168.9301 170.9021 172.8741
[49] 174.8461 176.8181 178.7902

attr(,"class")
[1] "xyVector"
> 
> 
> 
> ### * <FOOTER>
> ###
> cleanEx()
> options(digits = 7L)
> base::cat("Time elapsed: ", proc.time() - base::get("ptime", pos = 'CheckExEnv'),"\n")
Time elapsed:  0.42 0.018 0.441 0 0 
> grDevices::dev.off()
null device 
          1 
> ###
> ### Local variables: ***
> ### mode: outline-minor ***
> ### outline-regexp: "\\(> \\)?### [*]+" ***
> ### End: ***
> quit('no')
