gpt4 book ai didi

r - UseMethod 调用的方法范围

转载 作者:行者123 更新时间:2023-12-04 09:08:04 26 4
gpt4 key购买 nike

对比以下两个代码片段:

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.numeric 的自由变量(即“y”)在 g 的本地环境中计算,而在第二个片段中,g.numeric 的自由变量(即“x”)在全局环境中计算。为何如此?

最佳答案

正如 Writing R Extensions 中所说的:

A method must have all the arguments of the generic, including … if the generic does.



你的第二个例子没有( 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

关于r - UseMethod 调用的方法范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20818222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com