ml-it-r-devel at epigenomics.com
2008-Apr-16 12:29 UTC
[Rd] methods::is problem in R 2.7.0 & R 2.8.0 devel
Hi, x <- 1L class(x) <- c("myInt", "integer") is(x) Error in inherits(x, "factor") : argument "class2" is missing, with no default The problem arises when is() is used with only one argument (object) which has more than one class reported by class(object). In the code is() does use variable "class2" before checking for its presence. Reversing the order of checks is2 <- function(object, class2) { cl <- class(object) if (missing(class2)) return(extends(cl)) if (length(cl) > 1) return(class2 %in% cl) if (.identC(cl, class2) || .identC(class2, "ANY")) return(TRUE) ext <- possibleExtends(cl, class2) if (is.logical(ext)) ext else if (ext at simple) TRUE else ext at test(object) } is2(x) [1] "myInt" "integer" This is not sufficient, though: utils::data(npk, package="MASS") ret <- aov(yield ~ block + N*P*K, npk) is2(ret) [1] "aov" "lm" "lm" "mlm" "oldClass" "oldClass" with duplicate class names due to extends(class(ret)) [1] "aov" "lm" "lm" "mlm" "oldClass" "oldClass" so something different would be needed. Best, Matthias> sessionInfo()R version 2.7.0 RC (2008-04-15 r45347) i686-pc-linux-gnu locale: LC_CTYPE=de_DE at euro;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=de_DE at euro;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=de_DE at euro;LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices datasets utils methods base -- Matthias Burger Project Manager/ Biostatistician Epigenomics AG Kleine Praesidentenstr. 1 10178 Berlin, Germany phone:+49-30-24345-371 fax:+49-30-24345-555 http://www.epigenomics.com matthias.burger at epigenomics.com -- Epigenomics AG Berlin Amtsgericht Charlottenburg HRB 75861 Vorstand: Geert Nygaard (CEO/Vorsitzender), Dr. Kurt Berlin (CSO) Oliver Schacht PhD (CFO), Christian Piepenbrock (COO) Aufsichtsrat: Prof. Dr. Dr. hc. Rolf Krebs (Chairman/Vorsitzender)