
R version 3.6.2 Patched (2020-02-12 r77795) -- "Dark and Stormy Night"
Copyright (C) 2020 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))
> 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
> 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, deriv = 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.196 0.012 0.209 0 0 
> grDevices::dev.off()
null device 
          1 
> ###
> ### Local variables: ***
> ### mode: outline-minor ***
> ### outline-regexp: "\\(> \\)?### [*]+" ***
> ### End: ***
> quit('no')
