R S4 класс союз профсоюзов - PullRequest
       21

R S4 класс союз профсоюзов

0 голосов
/ 17 февраля 2020

Я пытаюсь создать sh объединение объединений классов для облегчения отправки методов. Следующее представление делает именно то, что я хочу, когда выполняется в глобальной среде, но как только я помещаю этот код в пакет, последняя строка, f(new("a")), выдает ошибку, что он не может найти унаследованный метод.

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"))

что мне не хватает?

, чтобы облегчить воспроизведение во время сеанса fre sh R, это воспроизводит проблему:

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"))

1 Ответ

0 голосов
/ 27 февраля 2020
...