首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R类联合的S4类联合

R类联合的S4类联合
EN

Stack Overflow用户
提问于 2020-02-17 22:39:43
回答 1查看 151关注 0票数 0

我正在尝试建立一个类联合来促进方法分派。下面的reprex在全局环境中执行时完全符合我的要求,但只要我将这段代码放入包中,最后一行f(new("a"))就抛出一个错误,指出它无法找到继承的方法。

代码语言:javascript
复制
setClass("x", slots = list(slot ="character"))
setClass("y", slots = list(slot ="character"))
setClass("a", slots = list(slot ="character"))
setClass("b", slots = list(slot ="character"))
setClassUnion("xy", c("x", "y"))
setClassUnion("ab", c("a", "b"))
setClassUnion("xyab", c("xy", "ab"))
setGeneric("f", function(object, ...) standardGeneric("f"))
setMethod("f", "xyab", function(object, ...) print("hi!"))

## print's "hi!" as expected
f(new("a"))

我遗漏了什么?

为了便于在新的R会话中重现,这将重现该问题:

代码语言:javascript
复制
library(devtools)
fn <- "codefile.R"
writeLines(
    c(
        "setClass('x', slots = list(slot ='character'))",
        "setClass('y', slots = list(slot ='character'))",
        "setClass('a', slots = list(slot ='character'))",
        "setClass('b', slots = list(slot ='character'))",
        "setClassUnion('xy', c('x', 'y'))",
        "setClassUnion('ab', c('a', 'b'))",
        "setClassUnion('xyab', c('xy', 'ab'))",
        "setGeneric('f', function(object, ...) standardGeneric('f'))",
        "setMethod('f', 'xyab', function(object, ...) print('hi!'))"
    ),
    con = fn
)

package.skeleton(code_files = "codefile.R")
devtools::load_all("anRpackage")
f(new("a"))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-27 10:54:04

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60264786

复制
相关文章

相似问题

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