对比以下两个代码片段:
1)
> y <- 1
> g <- function(x) {
+ y <- 2
+ UseMethod("g")
+ }
> g.numeric <- function(x) y
> g(10)
[1] 2
2)
> x <- 1
> g <- function(x) {
+ x <- 2
+ UseMethod("g")
+ }
> g.numeric <- function(y) x
> g(10)
[1] 1
在第一段中,g.数值的空闲变量(即"y")在g的本地环境中计算,而在第二段中,g.数值的空闲变量(即"x")是在全局环境中计算的。怎么会这样呢?
发布于 2013-12-28 19:09:58
就像在Writing R Extensions里说的
方法必须具有泛型的所有参数,包括…如果是仿制的话。
您的第二个示例没有(g(x)
vs g.numeric(y)
)。如果您重新定义了g <- function(y)
,那么一切都与您的第一个示例相同。
> x <- 1
> g <- function(y) {
+ x <- 2
+ UseMethod("g")
+ }
> g.numeric <- function(y) x
> g(10)
[1] 2
https://stackoverflow.com/questions/20818222
复制相似问题