Tabla de contenido:
Video: Cómo sacar el contorno de una imagen en Corel Draw [Vectorización Rápida] 2024
Al trabajar con funciones en R, algunas veces, trabaja con algunos objetos que no creó primero en el área de trabajo. Utiliza los argumentos x, mult y FUN como si fueran objetos, y crea un porcentaje de objeto dentro de la función que no puede encontrar en el área de trabajo después de usar la función. Entonces, ¿qué está pasando?
Crear un caso de prueba
Descubrámoslo a través de un pequeño ejemplo. Primero, crea un objeto x y una pequeña función de prueba () como esta:
x <- 1: 5 test <- function (x) {cat ("Esto es x:", x, "n") rm (x) cat ("Esto es x después de eliminar it: ", x," n ")}
La función test () no hace mucho. Toma un argumento x, lo imprime en la consola, lo elimina e intenta imprimirlo de nuevo. Puede pensar que esta función fallará, porque x desaparece después de la línea rm (x). Pero no, si prueba esta función, funciona bien, como se muestra en el siguiente ejemplo:
Incluso después de eliminar x, R todavía puede encontrar otro x que puede imprimir Si observas un poco más de cerca, verás que la x impresa en la segunda línea no es la que diste como argumento, sino la x que creaste antes en el espacio de trabajo. ¿Cómo?
Buscar en la ruta
Si usa una función, la función primero crea un entorno local temporal
. Este entorno local está anidado dentro del entorno global, lo que significa que, desde ese entorno local, también puede acceder a cualquier objeto desde el entorno global. Tan pronto como la función finaliza, el entorno local se destruye junto con todos los objetos en él.
. Si llama a una función desde el espacio de trabajo a través de un script o mediante la línea de comando, este entorno principal pasa a ser el entorno global. Si R ve cualquier nombre de objeto mencionado en cualquier código de la función, primero busca en el entorno local. Como encuentra un objeto x allí, usa ese para la primera declaración cat (). En la línea siguiente, R elimina ese objeto x. Entonces, cuando R alcanza la tercera línea, ya no puede encontrar un objeto x en el entorno local. No hay problema. R sube por la pila de entornos y comprueba si encuentra algo parecido a una x en el entorno global. Como puede encontrar una x allí, usa esa en la segunda declaración cat ().
Si usa rm () dentro de una función, rm () eliminará, de forma predeterminada, solo los objetos dentro de esa función.De esta forma, puede evitar quedarse sin memoria cuando escribe funciones que tienen que funcionar en grandes conjuntos de datos. Puede eliminar inmediatamente grandes objetos temporales en lugar de esperar a que la función lo haga al final.