此处需要注意的是R中的默认degree=3,此处的1:5是并不代表内部节点,而是在最后的输出结果的矩阵里,B样条基函数会返回它们在1,2,3,4,5处的值,所以返回的矩阵才会是5行,下面有一个简单实现bs()计算基矩阵的代码,我忘了是从哪里找到的了,可以帮助理解R中bs()的计算过程
rm(list=ls())
# x <- c(0.0, 11.0, 17.9, 49.3, 77.4)
#这是一个递归的程序,注意一下
basis <- function(x, degree, i, knots) {
browser()
if(degree == 0){
B <- ifelse((x >= knots[i]) & (x < knots[i+