gpt4 book ai didi

r - 方法的 S4 缺少参数或 NULL 参数?

转载 作者:行者123 更新时间:2023-12-04 13:17:45 32 4
gpt4 key购买 nike

有没有办法定义方法的参数为 时会发生什么?缺失或 NULL ?

在下面的例子中,无论我是否输入 foo(),我都想调用相同的函数。或 foo(NULL) .当然我知道我可以有一个方法setMethod("foo","NULL",function(x) foo())但那是代码复制和可能的错误来源。

谢谢!

setGeneric("foo",function(x) standardGeneric("foo"))
setMethod("foo","numeric",function(x) "numeric")
setMethod("foo","NULL",function(x) "NULL")
setMethod("foo","missing",function(x) "missing")

R> foo(1)
[1] "numeric"
R> foo()
[1] "missing"
R> foo(NULL)
[1] "NULL"

最佳答案

派对迟到了将近三年,但你真的想要setClassUnion :

> setClassUnion("missingOrNULL", c("missing", "NULL"))
> setGeneric("foo",function(x) standardGeneric("foo"))
> setMethod("foo","numeric",function(x) "numeric")
> setMethod("foo","missingOrNULL",function(x) "NULL")

> foo(1)
[1] "numeric"
> foo()
[1] "NULL"
> foo(NULL)
[1] "NULL"
setClassUnion创建一个虚拟类,它是组件类的父类(super class)(父类),因此两个子类都从该类继承,这意味着您可以对每个子类调度相同的函数。

关于r - 方法的 S4 缺少参数或 NULL 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4440363/

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