Hacer frente a la determinación del alcance en r

Cada objeto se crea en I termina en este entorno, que se llama el medio ambiente mundial. El medio ambiente global es el universo del usuario R donde todo sucede.

gurús de I le dirá que este “universo” es en realidad contenía en otro “universo” y que una de otra, y así sucesivamente - pero ese “espacio exterior” es un ambiente hostil adecuado sólo para atreverse codificadores sin temor a romper cosas. Por lo tanto, no hay necesidad de ir allí ahora.

Es posible trabajar con algunos objetos que no creen en primer lugar en el entorno global. Es probable que utilice los argumentos x, mult, y DIVERTIDO como si fueran objetos, y se crea un objeto por ciento dentro de la función que no se puede encontrar de nuevo en el medio ambiente mundial después de utilizar la función. Entonces, ¿qué está pasando?

Creación de un caso de prueba

Vamos a ver a través de un pequeño ejemplo. En primer lugar, crear un objeto x y una pequeña prueba() función como esta:

Video: ¿Cómo sacar dominio y rango?

x lt; - 1: 5test lt; - función (x) {cat ( “Esto es x:”, x, “n”) rm (x) cat ( “Esto es x después de quitarlo:”, x, “n”)}

los prueba() la función no hace mucho. Se toma un argumento x, imprime a la consola, lo elimina, y trata de imprimir de nuevo. Usted puede pensar que esta función fallará, porque x desaparece después de la línea rm (x). Pero no, si se intenta esta función funciona bien, como se muestra en el siguiente ejemplo:

Video: GRÁFICA, DOMINIO Y RANGO DE UNA FUNCIÓN RACIONAL

gt; de prueba (5: 1) Este es x: 5 4 3 2 1 Este es x después de quitarlo: 1 2 3 4 5

Incluso después de la eliminación x, R todavía puede encontrar otro x que se puede imprimir. Si nos fijamos un poco más de cerca, se ve que la x impreso en la segunda línea no es realmente el que usted dio como argumento, pero el x que creó antes en el entorno global. ¿Cómo?

Buscando el camino

Si se utiliza una función, la función crea por primera vez un temporal ambiente local. Este entorno local es anidado dentro del entorno global, lo que significa que, a partir de ese entorno local, también se puede acceder a cualquier objeto del entorno global. Tan pronto como termina la función, el entorno local es destruida junto con todos los objetos en él.

Para ser totalmente correcta, en función siempre crea un ambiente dentro del entorno que se llama a partir, llamado el entorno de los padres. Si se llama a una función desde el medio ambiente mundial, ya sea a través de una secuencia de comandos o mediante el uso de la línea de comandos, este entorno padre pasa a ser el medio ambiente mundial.

Se puede ver una ilustración esquemática de cómo el prueba() La opción funciona a continuación. El gran rectángulo representa el medio ambiente mundial, y el pequeño rectángulo que representa el entorno local de la función de prueba. En el entorno global, se asigna el valor 1: 5 al objeto x. En la llamada de función, sin embargo, se asigna el valor 5: 1 al argumento x. Este argumento se convierte en un objeto x en el medio ambiente local.

Cómo R mira a través de entornos globales y locales.
Cómo R mira a través de entornos globales y locales.

Si R ve ningún nombre de objeto - en este caso, x - se menciona en ningún código en la función, primero se busca en el entorno local. Porque encuentra un objeto x allí, se utiliza uno que por primera gato() declaración. En la línea siguiente, R elimina ese objeto x. Así que, cuando R alcanza la tercera línea, no puede encontrar un objeto x en el entorno local más. No hay problema.

R se mueve hacia arriba la pila de ambientes y comprobaciones para ver si se encuentra algo que parece un x en el medio ambiente mundial. Debido a que puede encontrar una x allí, se utiliza uno que en el segundo gato() declaración.

Video: ERROR ABSOLUTO Y ERROR RELATIVO EN LAS APROXIMACIONES. HD

Si utiliza rm () dentro de una función, rm () será, por defecto, eliminar sólo los objetos dentro del entorno local de esa función. De esta manera, se puede evitar quedarse sin memoria al escribir funciones que tienen que trabajar en grandes conjuntos de datos. Puede retirar inmediatamente grandes objetos temporales en lugar de esperar a que la función de hacerlo al final.

Artículos Relacionados