从R中的bs(b样条)函数输出中提取矩阵
extract matrix from bs (b spline) function output in R
设x = c(1, 2, 3)
为向量。我在 R
的 splines
包中使用 bs
函数生成在 x
.
处计算的 B 样条矩阵
require(splines)
x <- c(1, 2, 3)
bs.x <- bs(x, knots = c(1.5, 2.5))
输出bs.x
如下,
1 2 3 4 5
[1,] 0.00000000 0.0000000 0.0000000 0.00000000 0
[2,] 0.05555556 0.4444444 0.4444444 0.05555556 0
[3,] 0.00000000 0.0000000 0.0000000 0.00000000 1
attr(,"degree")
[1] 3
attr(,"knots")
[1] 1.5 2.5
attr(,"Boundary.knots")
[1] 1 3
attr(,"intercept")
[1] FALSE
attr(,"class")
[1] "bs" "basis" "matrix"
显然,除了基矩阵,bs.x
还有其他属性。 我的问题是如何摆脱这些属性。我需要这样做,因为最终我需要 运行 Matrix(bs.x)
,这会引发以下错误留言。
Error in as(x, "matrix") :
internal problem in as(): “bs” is(object, "matrix") is
TRUE, but the metadata asserts that the 'is' relation is FALSE
我猜这是因为 matrix
是 bs.x
所属的 类 之一。这时,我做了下面的傻事
bs.x <- matrix(as.numeric(bs.x), nr = nrow(bs.x))
有更好的选择吗?提前致谢。
并没有好很多,但是
attributes(bs.x) <- attributes(bs.x)["dim"]
似乎有效。 (将 bs.x
的属性重新分配为 仅 dim
属性。)
设x = c(1, 2, 3)
为向量。我在 R
的 splines
包中使用 bs
函数生成在 x
.
require(splines)
x <- c(1, 2, 3)
bs.x <- bs(x, knots = c(1.5, 2.5))
输出bs.x
如下,
1 2 3 4 5
[1,] 0.00000000 0.0000000 0.0000000 0.00000000 0
[2,] 0.05555556 0.4444444 0.4444444 0.05555556 0
[3,] 0.00000000 0.0000000 0.0000000 0.00000000 1
attr(,"degree")
[1] 3
attr(,"knots")
[1] 1.5 2.5
attr(,"Boundary.knots")
[1] 1 3
attr(,"intercept")
[1] FALSE
attr(,"class")
[1] "bs" "basis" "matrix"
显然,除了基矩阵,bs.x
还有其他属性。 我的问题是如何摆脱这些属性。我需要这样做,因为最终我需要 运行 Matrix(bs.x)
,这会引发以下错误留言。
Error in as(x, "matrix") :
internal problem in as(): “bs” is(object, "matrix") is
TRUE, but the metadata asserts that the 'is' relation is FALSE
我猜这是因为 matrix
是 bs.x
所属的 类 之一。这时,我做了下面的傻事
bs.x <- matrix(as.numeric(bs.x), nr = nrow(bs.x))
有更好的选择吗?提前致谢。
并没有好很多,但是
attributes(bs.x) <- attributes(bs.x)["dim"]
似乎有效。 (将 bs.x
的属性重新分配为 仅 dim
属性。)