Rev 10543 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
R : Copyright 2000, The R Development Core TeamVersion 1.2.0 Under development (unstable) (2000-09-04)R is free software and comes with ABSOLUTELY NO WARRANTY.You are welcome to redistribute it under certain conditions.Type "?license" or "?licence" for distribution details.R is a collaborative project with many contributors.Type "?contributors" for a list.Type "demo()" for some demos, "help()" for on-line help, or"help.start()" for a HTML browser interface to help.Type "q()" to quit R.>> ls.base <- ls(pos=length(search()))#- something more elegant ?> base.is.f <- sapply(ls.base, function(x) is.function(get(x)))> bi <- ls.base[base.is.f]> cat("\nNumber of base objects:\t\t", length(ls.base),+ "\nNumber of builtin functions:\t", sum(base.is.f),+ "\n\t starting with 'is.' :\t ",+ length(is.bi <- bi[substring(bi,1,3) == "is."]), "\n")Number of base objects: 1286Number of builtin functions: 1261starting with 'is.' : 40> ## 0.14 : 31> ## 0.50 : 33> ## 0.60 : 34> ## 0.62 : 35> ## 0.63 : 37>> ## This can be useful: Which of the builtin functions are "primitive" ?> is.primitive <- function(obj) is.function(obj) && is.null(args(obj))>> is.ALL <- function(obj, func.names = ls(pos=length(search())),+ not.using = c("is.single", "is.na.data.frame",+ "is.na.POSIXlt",+ "is.loaded", "is.empty.model", "is.R", "is.element"),+ true.only = FALSE, debug = FALSE)+ {+ ## Purpose: show many 'attributes' of R object __obj__+ ## -------------------------------------------------------------------------+ ## Arguments: obj: any R object+ ## -------------------------------------------------------------------------+ ## Author: Martin Maechler, Date: 6 Dec 96, 15:23++ is.fn <- func.names[substring(func.names,1,3) == "is."]+ use.fn <- is.fn[ is.na(match(is.fn, not.using))]++ r <- if(true.only) character(0)+ else structure(vector("list", length= length(use.fn)), names= use.fn)+ for(f in use.fn) {+ if(debug) cat(f,"")+ fn <- get(f)+ rr <-+ if(any(f == c("is.na", "is.nan")) &&+ ((!is.atomic(obj) && !is.list(obj)) || is.null(obj)))+ NA+ else+ if(is.primitive(fn) || length(formals(fn))) fn(obj) else fn()+ if(!is.logical(rr)) cat("f=",f," --- rr is NOT logical = ",rr,"\n")+ ##if(1!=length(rr)) cat("f=",f," --- rr NOT of length 1; = ",rr,"\n")+ if(true.only && length(rr)==1 && !is.na(rr) && rr) r <- c(r, f)+ else if(!true.only) r[[f]] <- rr+ }+ if(debug)cat("\n")+ if(is.list(r)) structure(r, class = "isList") else r+ }>> print.isList <- function(r, ...)+ {+ ## Purpose: print METHOD for 'isList' objects+ ## -------------------------------------------------------------------------+ ## Arguments:+ ## -------------------------------------------------------------------------+ ## Author: Martin Maechler, Date: 12 Mar 97, 15:07+ if(is.list(r)) {+ nm <- format(names(r))+ rr <- lapply(r, symnum)+ for(i in seq(along=r)) cat(nm[i],":",rr[[i]],"\n", ...)+ } else NextMethod("print", ...)+ }>>> is.ALL(NULL)is.array : .is.atomic : |is.call : .is.character : .is.complex : .is.data.frame : .is.double : .is.environment : .is.expression : .is.factor : .is.finite : NAis.function : .is.infinite : NAis.integer : .is.language : .is.list : .is.logical : .is.matrix : .is.na : ?is.name : .is.nan : ?is.null : |is.numeric : .is.object : .is.ordered : .is.pairlist : |is.qr : .is.real : .is.recursive : .is.symbol : .is.table : .is.ts : .is.vector : .> is.ALL(NULL, true.only = TRUE)[1] "is.atomic" "is.null" "is.pairlist"> all.equal(NULL, pairlist())[1] TRUE> ## list() != NULL == pairlist() :> is.ALL(list(), true.only = TRUE)[1] "is.list" "is.recursive" "is.vector">> (pl <- is.ALL(pairlist(1, list(3,"A")), true.only = TRUE))[1] "is.list" "is.pairlist" "is.recursive"> (ll <- is.ALL( list(1,pairlist(3,"A")), true.only = TRUE))[1] "is.list" "is.recursive" "is.vector"> all.equal(pl[pl != "is.pairlist"],+ ll[ll != "is.vector"])## TRUE[1] TRUE>> is.ALL(1:5)is.array : .is.atomic : |is.call : .is.character : .is.complex : .is.data.frame : .is.double : .is.environment : .is.expression : .is.factor : .is.finite : | | | | |is.function : .is.infinite : . . . . .is.integer : |is.language : .is.list : .is.logical : .is.matrix : .is.na : . . . . .is.name : .is.nan : . . . . .is.null : .is.numeric : |is.object : .is.ordered : .is.pairlist : .is.qr : .is.real : .is.recursive : .is.symbol : .is.table : .is.ts : .is.vector : |> is.ALL(array(1:24, 2:4))is.array : |is.atomic : |is.call : .is.character : .is.complex : .is.data.frame : .is.double : .is.environment : .is.expression : .is.factor : .is.finite : | | | | | | | | | | | | | | | | | | | | | | | |is.function : .is.infinite : . . . . . . . . . . . . . . . . . . . . . . . .is.integer : |is.language : .is.list : .is.logical : .is.matrix : .is.na : . . . . . . . . . . . . . . . . . . . . . . . .is.name : .is.nan : . . . . . . . . . . . . . . . . . . . . . . . .is.null : .is.numeric : |is.object : .is.ordered : .is.pairlist : .is.qr : .is.real : .is.recursive : .is.symbol : .is.table : .is.ts : .is.vector : .> is.ALL(1 + 3)is.array : .is.atomic : |is.call : .is.character : .is.complex : .is.data.frame : .is.double : |is.environment : .is.expression : .is.factor : .is.finite : |is.function : .is.infinite : .is.integer : .is.language : .is.list : .is.logical : .is.matrix : .is.na : .is.name : .is.nan : .is.null : .is.numeric : |is.object : .is.ordered : .is.pairlist : .is.qr : .is.real : |is.recursive : .is.symbol : .is.table : .is.ts : .is.vector : |> e13 <- expression(1 + 3)> is.ALL(e13)is.array : .is.atomic : .is.call : .is.character : .is.complex : .is.data.frame : .is.double : .is.environment : .is.expression : |is.factor : .is.finite : .is.function : .is.infinite : .is.integer : .is.language : |is.list : .is.logical : .is.matrix : .is.na : ?is.name : .is.nan : ?is.null : .is.numeric : .is.object : .is.ordered : .is.pairlist : .is.qr : .is.real : .is.recursive : |is.symbol : .is.table : .is.ts : .is.vector : |> is.ALL(substitute(expression(a + 3), list(a=1)), true.only = TRUE)[1] "is.call" "is.language" "is.recursive"> is.ALL(y ~ x)is.array : .is.atomic : .is.call : |is.character : .is.complex : .is.data.frame : .is.double : .is.environment : .is.expression : .is.factor : .is.finite : . . .is.function : .is.infinite : . . .is.integer : .is.language : |is.list : .is.logical : .is.matrix : .is.na : ?is.name : .is.nan : ?is.null : .is.numeric : .is.object : |is.ordered : .is.pairlist : .is.qr : .is.real : .is.recursive : |is.symbol : .is.table : .is.ts : .is.vector : .>> is0 <- is.ALL(numeric(0))> is0.ok <- 1 == (lis0 <- sapply(is0, length))> is0[!is0.ok]$is.finitelogical(0)$is.infinitelogical(0)$is.nalogical(0)$is.nanlogical(0)> is0 <- unlist(is0)> is0is.array is.atomic is.call is.character is.complexFALSE TRUE FALSE FALSE FALSEis.data.frame is.double is.environment is.expression is.factorFALSE TRUE FALSE FALSE FALSEis.function is.integer is.language is.list is.logicalFALSE FALSE FALSE FALSE FALSEis.matrix is.name is.null is.numeric is.objectFALSE FALSE FALSE TRUE FALSEis.ordered is.pairlist is.qr is.real is.recursiveFALSE FALSE FALSE TRUE FALSEis.symbol is.table is.ts is.vectorFALSE FALSE FALSE TRUE> ispi <- unlist(is.ALL(pi))> all(ispi[is0.ok] == is0)[1] TRUE>> is.ALL(numeric(0), true=TRUE)[1] "is.atomic" "is.double" "is.numeric" "is.real" "is.vector"> is.ALL(array(1,1:3), true=TRUE)[1] "is.array" "is.atomic" "is.double" "is.numeric" "is.real"> is.ALL(cbind(1:3), true=TRUE)[1] "is.array" "is.atomic" "is.integer" "is.matrix" "is.numeric">> is.ALL(structure(1:7, names = paste("a",1:7,sep="")))is.array : .is.atomic : |is.call : .is.character : .is.complex : .is.data.frame : .is.double : .is.environment : .is.expression : .is.factor : .is.finite : | | | | | | |is.function : .is.infinite : . . . . . . .is.integer : |is.language : .is.list : .is.logical : .is.matrix : .is.na : . . . . . . .is.name : .is.nan : . . . . . . .is.null : .is.numeric : |is.object : .is.ordered : .is.pairlist : .is.qr : .is.real : .is.recursive : .is.symbol : .is.table : .is.ts : .is.vector : |> is.ALL(structure(1:7, names = paste("a",1:7,sep="")), true.only = TRUE)[1] "is.atomic" "is.integer" "is.numeric" "is.vector">> x <- 1:20 ; y <- 5 + 6*x + rnorm(20) ; lm.xy <- lm(y ~ x)> is.ALL(lm.xy, true.only = TRUE)[1] "is.list" "is.object" "is.recursive"> is.ALL(structure(1:7, names = paste("a",1:7,sep="")))is.array : .is.atomic : |is.call : .is.character : .is.complex : .is.data.frame : .is.double : .is.environment : .is.expression : .is.factor : .is.finite : | | | | | | |is.function : .is.infinite : . . . . . . .is.integer : |is.language : .is.list : .is.logical : .is.matrix : .is.na : . . . . . . .is.name : .is.nan : . . . . . . .is.null : .is.numeric : |is.object : .is.ordered : .is.pairlist : .is.qr : .is.real : .is.recursive : .is.symbol : .is.table : .is.ts : .is.vector : |> is.ALL(structure(1:7, names = paste("a",1:7,sep="")), true.only = TRUE)[1] "is.atomic" "is.integer" "is.numeric" "is.vector">>