首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UseMethod调用的方法的范围

UseMethod调用的方法的范围
EN

Stack Overflow用户
提问于 2013-12-28 19:02:12
回答 1查看 67关注 0票数 7

对比以下两个代码片段:

1)

代码语言:javascript
运行
复制
> y <- 1
> g <- function(x) { 
+   y <- 2
+   UseMethod("g")
+ }
> g.numeric <- function(x) y
> g(10)
[1] 2

2)

代码语言:javascript
运行
复制
> x <- 1
> g <- function(x) {
+   x <- 2
+   UseMethod("g")
+ }
> g.numeric <- function(y) x
> g(10)
[1] 1

在第一段中,g.数值的空闲变量(即"y")在g的本地环境中计算,而在第二段中,g.数值的空闲变量(即"x")是在全局环境中计算的。怎么会这样呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-28 19:09:58

就像在Writing R Extensions里说的

方法必须具有泛型的所有参数,包括…如果是仿制的话。

您的第二个示例没有(g(x) vs g.numeric(y))。如果您重新定义了g <- function(y),那么一切都与您的第一个示例相同。

代码语言:javascript
运行
复制
> x <- 1
> g <- function(y) {
+   x <- 2
+   UseMethod("g")
+ }
> g.numeric <- function(y) x
> g(10)
[1] 2
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20818222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档