next up previous contents index errataps
Sig: Regresión lineal Sup: Cronometrado de un programa Ant: Ejercicios Err: Si hallas una errata ...

Entornos

La función comment: Escriba una función que muestre los objetos del entorno actual que tienen asociados comentarios.
> 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


next up previous contents index errataps
Sig: Regresión lineal Sup: Cronometrado de un programa Ant: Ejercicios Err: Si hallas una errata ...
Casiano Rodríguez León
2005-04-19