> debug(comments) > comments() debugging in: comments() debug: { objects <- ls(env = parent.env(environment()), ...) string <- character(0) for (i in objects) { if (length(grep("^(\\w|\\.)+$", i, perl = TRUE)) > 0) { c <- comment(eval(parse(text = i))) if (!is.null(c)) { c <- paste(i, c, sep = ": ") string <- c(string, c) } } } print.noquote(string) } Browse[1]> debug: objects <- ls(env = parent.env(environment()), ...) Browse[1]> debug: string <- character(0) Browse[1]> ls() [1] "objects" Browse[1]> debug: for (i in objects) { if (length(grep("^(\\w|\\.)+$", i, perl = TRUE)) > 0) { c <- comment(eval(parse(text = i))) if (!is.null(c)) { c <- paste(i, c, sep = ": ") string <- c(string, c) } } } Browse[1]> ls() [1] "objects" "string" Browse[1]> objects [1] "*.bench" "*tmp*" "+.bench" [4] "SLOGS" "as.bench" "b1" [7] "bench" "benchrc" "comments" [10] "errors" "filename" "filename<-" [13] "hist.bench" "is.bench" "largelm" [16] "last.warning" "lmb" "lmblog" [19] "lmx" "lmy" "names.attributes.bench" [22] "nf" "pb" "plot.bench" [25] "print.bench" "r" "rcbench" [28] "read" "read.bench" "screen2x2" [31] "smalllm" "summary.bench" "t.interval" [34] "t.value" "top" "trunc" [37] "x" "xhist" "xrange" [40] "y" "y.average.lm" "y.error2" [43] "y.predicted" "y.summary" "yhist" [46] "yrange" "z Browse[1]> ls(envir=as.environment(1)) [1] "*.bench" "*tmp*" "+.bench" [4] "SLOGS" "as.bench" "b1" [7] "bench" "benchrc" "comments" [10] "errors" "filename" "filename<-" [13] "hist.bench" "is.bench" "largelm" [16] "last.warning" "lmb" "lmblog" [19] "lmx" "lmy" "names.attributes.bench" [22] "nf" "pb" "plot.bench" [25] "print.bench" "r" "rcbench" [28] "read" "read.bench" "screen2x2" [31] "smalllm" "summary.bench" "t.interval" [34] "t.value" "top" "trunc" [37] "x" "xhist" "xrange" [40] "y" "y.average.lm" "y.error2" [43] "y.predicted" "y.summary" "yhist" [46] "yrange" "z" Browse[1]> search() [1] ".GlobalEnv" "package:lattice" "sw" [4] "package:methods" "package:stats" "package:graphics" [7] "package:grDevices" "package:utils" "package:datasets" [10] "Autoloads" "package:base"El primer entorno es el de trabajo actual, el último
package:base
es donde residen las funciones básicas que
implementan R.
Browse[1]> ls(envir=as.environment(2)) # nos muestra los objetos en el package lattice [1] "Rows" "[.shingle" "as.factorOrShingle" [4] "as.shingle" "banking" "barchart" [7] "barley" "bwplot" "canonical.theme" [10] "cloud" "col.whitebg" "contourplot" [13] "densityplot" "do.breaks" "dotplot" [16] "draw.colorkey" "draw.key" "environmental" [19] "equal.count" "ethanol" "histogram" [22] "is.shingle" "larrows" "lattice.getOption" [25] "lattice.options" "latticeParseFormula" "levelplot" [28] "llines" "lplot.xy" "lpoints" [31] "lsegments" "lset" "ltext" [34] "ltransform3dMatrix" "ltransform3dto3d" "melanoma" [37] "oneway" "panel.3dscatter" "panel.3dwire" [40] "panel.abline" "panel.arrows" "panel.axis" [43] "panel.barchart" "panel.bwplot" "panel.cloud" [46] "panel.contourplot" "panel.curve" "panel.densityplot" [49] "panel.dotplot" "panel.fill" "panel.grid" [52] "panel.histogram" "panel.identify" "panel.levelplot" [55] "panel.linejoin" "panel.lines" "panel.lmline" [58] "panel.loess" "panel.mathdensity" "panel.pairs" [61] "panel.parallel" "panel.points" "panel.qq" [64] "panel.qqmath" "panel.qqmathline" "panel.rug" [67] "panel.segments" "panel.splom" "panel.stripplot" [70] "panel.superpose" "panel.superpose.2" "panel.text" [73] "panel.tmd" "panel.wireframe" "panel.xyplot" [76] "parallel" "prepanel.lmline" "prepanel.loess" [79] "prepanel.qqmathline" "qq" "qqmath" [82] "rfs" "shingle" "show.settings" [85] "simpleKey" "singer" "splom" [88] "strip.custom" "strip.default" "stripplot" [91] "tmd" "trellis.device" "trellis.focus" [94] "trellis.grobname" "trellis.last.object" "trellis.panelArgs" [97] "trellis.par.get" "trellis.par.set" "trellis.switchFocus" [100] "trellis.unfocus" "trellis.vpname" "wireframe" [103] "xyplot" > ls(1) # tambien se puede escribir simplemente el indice ... [1] "*.bench" "*tmp*" "+.bench" [4] "SLOGS" "as.bench" "b1" [7] "bench" "benchrc" "comments" [10] "errors" "filename" "filename<-" [13] "hist.bench" "is.bench" "largelm" [16] "last.warning" "lmb" "lmblog" [19] "lmx" "lmy" "names.attributes.bench" [22] "nf" "pb" "plot.bench" [25] "print.bench" "r" "rcbench" [28] "read" "read.bench" "screen2x2" [31] "smalllm" "summary.bench" "t.interval" [34] "t.value" "top" "trunc" [37] "x" "xhist" "xrange" [40] "y" "y.average.lm" "y.error2" [43] "y.predicted" "y.summary" "yhist" [46] "yrange" "z" Browse[1]> ls(envir=.GlobalEnv) # Otra forma ... [1] "*.bench" "*tmp*" "+.bench" [4] "SLOGS" "as.bench" "b1" [7] "bench" "benchrc" "comments" [10] "errors" "filename" "filename<-" [13] "hist.bench" "is.bench" "largelm" [16] "last.warning" "lmb" "lmblog" [19] "lmx" "lmy" "names.attributes.bench" [22] "nf" "pb" "plot.bench" [25] "print.bench" "r" "rcbench" [28] "read" "read.bench" "screen2x2" [31] "smalllm" "summary.bench" "t.interval" [34] "t.value" "top" "trunc" [37] "x" "xhist" "xrange" [40] "y" "y.average.lm" "y.error2" [43] "y.predicted" "y.summary" "yhist" [46] "yrange" "z" Browse[1]> find("is") # En que entorno esta el objeto "is"? [1] "package:methods" Browse[1]> x <- 4 # Ahora la "x" del entorno enmascara la del entorno padre ... Browse[1]> ls() [1] "objects" "string" "x" Browse[1]> x [1] 4 Browse[1]> get("x",1)[1:2,] # Accedemos a la "x" del entorno padre SIZE SORTED wall cusr csys CPU 1 10000 19 0.19 0.18 0 0.18 2 10000 18 0.19 0.18 0 0.18 FILE 1 from_10000_to_100000_sort-reverse_20times.txt 2 from_10000_to_100000_sort-reverse_20times.txt Browse[1]> exists("is") # Comprueba si un objeto existe en el camino de búsqueda [1] TRUE Browse[1]> exists("is", 4) [1] TRUE Browse[1]> exists("is", 5) [1] FALSE¿Como asignar un valor a un objeto cuyo nombre se conoce y que esta almacenado en una cadena?
Browse[1]> var <- "h" Browse[1]> for (i in 1:2) assign(paste(var,i,sep=""), i) Browse[1]> h1 [1] 1 Browse[1]> h2 [1] 2 Browse[1]> ls() [1] "h1" "h2" "i" "objects" "string" "var" "x" Browse[1]> for (i in 1:2) assign(paste(var,i,sep=""), i, pos=1) Browse[1]> ls(1, pat="^h") [1] "h1" "h2" "hist.bench" Browse[1]> rm(h1,h2,pos=1) Browse[1]> ls(1, pat="^h") [1] "hist.bench"¿Cómo eliminar todos los objetos en el espacio de trabajo, incluyendo los escondidos (los que empiezan por punto)?
> system("pwd") /home/pp2/src/perl/bench/tmp > ls() character(0) > x <- 1; y <- 2 > ls() [1] "x" "y" > rm(list=ls(all=T)) > ls() character(0)
assign |
Crea una nueva pareja nombre = valor |
exists |
Comprueba si un objeto dado existe |
get |
Devuelve una copia del objeto si existe |
objects |
Devuelve un vector de cadenas con los nombres de los objetos en el entorno |
remove |
Suprime los objetos especificados |
La funcion new.env
nos permite crear un entorno:
> e1 <- new.env(TRUE, NULL) # these two have parent package:base. > e2 <- new.env(FALSE, NULL) > assign("a", 3, env=e2) > parent.env(e1) <- e2 > get("a", env=e1) [1] 3