在下面的代码中,我在f
中存储并使用从splinefun
函数获得的函数。我可以使用它,但是我想以可读格式打印函数以理解计算。
x <- 1:7
y <- c(2,4,3,2,1,1,2)
f <- splinefun(x, y, method = "natural")
f(1)
f(2)
f(3.5)
如果我打印功能
print(f)
无论输入属性
,我总是得到以下内容function (x, deriv = 0L)
{
deriv <- as.integer(deriv)
if (deriv < 0L || deriv > 3L)
stop("'deriv' must be between 0 and 3")
if (deriv > 0L) {
z0 <- double(z$n)
z[c("y", "b", "c")] <- switch(deriv, list(y = z$b, b = 2 *
z$c, c = 3 * z$d), list(y = 2 * z$c, b = 6 * z$d,
c = z0), list(y = 6 * z$d, b = z0, c = z0))
z[["d"]] <- z0
}
res <- .splinefun(x, z)
if (deriv > 0 && z$method == 2 && any(ind <- x <= z$x[1L]))
res[ind] <- ifelse(deriv == 1, z$y[1L], 0)
res
}
<bytecode: 0x00000000089957a0>
<environment: 0x0000000007b8a700>
如何以f(x)= a + bx + cx ^ 2 ......等格式获取公式?
答案 0 :(得分:1)
评估点和多项式近似的系数存储在函数的环境中。这些将传递给C_SplineEval, x, z)
:
ls(envir=environment(f))
#[1] "z"
environment(f)$z
#-----------------------
$method
[1] 2
$n
[1] 7
$x
[1] 1 2 3 4 5 6 7
$y
[1] 2 4 3 2 1 1 2
$b
[1] 2.8076923 0.3846154 -1.3461538 -1.0000000 -0.6538462 0.6153846 1.1923077
$c
[1] 0.0000000 -2.4230769 0.6923077 -0.3461538 0.6923077 0.5769231 0.0000000
$d
[1] -0.80769231 1.03846154 -0.34615385 0.34615385 -0.03846154 -0.19230769
[7] 0.00000000
对帮助页面中的注释的评论/问题的回复:查看NEWS文件,可以看到此条目:
approxfun()
和splinefun()
现在返回stats名称空间中的内部函数的包装器,而不是.C()
或.Call()
调用。如果在不同的会话中保存并使用该功能,则更有可能工作。“