我想查看一个函数的源代码,看看它是如何工作的.我知道我可以通过在提示符下键入其名称来打印函数:
> t
function (x)
UseMethod("t")
<bytecode: 0x2332948>
<environment: namespace:base>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,是什么UseMethod("t")意思?我如何找到实际使用的源代码,例如:t(1:10)?
有没有当我看到之间的差异UseMethod,当我看到standardGeneric和showMethods,与with?
> with
standardGeneric for "with" defined from package "base"
function (data, expr, ...)
standardGeneric("with")
<bytecode: 0x102fb3fc0>
<environment: 0x102fab988>
Methods may be defined for arguments: data
Use showMethods("with") for currently available ones.
Run Code Online (Sandbox Code Playgroud)
在其他情况下,我可以看到正在调用R函数,但我找不到这些函数的源代码.
> ts.union
function (..., dframe = FALSE)
.cbind.ts(list(...), .makeNamesTs(...), dframe = dframe, union = TRUE)
<bytecode: 0x36fbf88>
<environment: namespace:stats>
> .cbindts
Error: object '.cbindts' …Run Code Online (Sandbox Code Playgroud) 或者换句话说:在这种情况下使用哪种算法?我想他们使用判别分析,如第4.4章所述。在詹姆斯等。等 “ R语言中的统计学习及其应用简介”?
输入意见后,我还可以按如下方式重述该问题:
ans <- .External2(C_modelmatrix, t, data)(model.matrix.default其中)中,模型根据因子水平而变化=> 我想我理解这部分。z <- .Call(C_Cdqrls, x, y, tol, FALSE)并且我不希望线性回归和判别分析在数学水平上是相同的。
我会错过明显的东西吗?同样,我的stats程序包是二进制文件,我无权访问源代码...我在本文中找到了非常有用的解释,但在某些时候它仅说明
... [解构]可能是一项复杂的任务,因此我们将不做详细介绍,以免将我们带到太远的地方...
我在文档中找不到任何内容,也无法debug(lm)
使用可再现的示例了解我所理解的情况:
n <- 10
p <- 6
set.seed(1)
x <- seq(0, 20, length.out = n) + rnorm(n, 0, 1)
y <- c(1:3)
y <- sample(y, n, replace = TRUE)
z <- 10*y*x + 10*y + 10 + rnorm(n, 0, 1)
debug(lm)
fit <- lm(z ~ x*y) …Run Code Online (Sandbox Code Playgroud)