Cómo utilizar las funciones internas en r
A veces, puede ser muy útil para utilizar las funciones internas en R. Escribir sus funciones de tal manera que necesitan los objetos en el entorno global en realidad no tiene sentido, porque el uso de funciones para evitar la dependencia de los objetos en el entorno global en primer lugar.
De hecho, todo el concepto detrás de R se opone firmemente el uso de variables globales utilizadas en diferentes funciones. Como lenguaje de programación funcional, una de las ideas principales de R es que el resultado de una función no debe depender de nada más que los valores de los argumentos de la función. Si le das a los argumentos de los mismos valores, siempre se obtiene el mismo resultado.
Si usted viene de otros lenguajes de programación como Java, esta característica puede que te parece extraño, pero tiene sus méritos. A veces es necesario repetir algunos cálculos varias veces dentro de una función, pero estos cálculos sólo tienen sentido dentro de esa función.
Suponga que desea comparar la producción de luz de algunas lámparas a media potencia y lleno de energía. Las toallas que pones delante de la ventana para bloquear el sol fuera no son realmente hasta el trabajo, por lo que también miden la cantidad de luz sigue llegando a través. Usted quiere restar la media de este valor a partir de los resultados con el fin de corregir sus medidas.
Para calcular la eficiencia en un 50 por ciento de potencia, puede utilizar la siguiente función:
calculate.eff lt; - función (x, y, control) {min.base lt; - función (z) z - medio (control) min.base (x) / min.base (y)}
Dentro de calculate.eff () función, que vea otra definición de función para un min.base () función. Exactamente como en el caso de otros objetos, esta función se crea en el entorno local de calculate.eff () y destruido de nuevo cuando la función se lleva a cabo. Usted no encontrará min.base () de nuevo en el espacio de trabajo.
Usted puede utilizar la función de la siguiente manera:
> Media lt; - c (2,23, 3,23, 1,48)> completa lt; - c (4,85, 4,95, 4,12)> nada lt; - c (0,14, 0,18, 0,56, 0,23)> calculate.eff (medio, por completo, nada) [1] 0.4270093 0.6318887 0.3129473
Si nos fijamos un poco más de cerca la definición de la función de min.base (), se observa que utiliza un objeto control pero no tiene una discusión con ese nombre. ¿Cómo funciona esto entonces? Cuando se llama a la función, ocurre lo siguiente:
La funcion calculate.eff () crea un nuevo entorno local que contiene los objetos X (con el valor de el cincuenta), y (con el valor de ciento), control (con el valor de nada), Así como la función de min.base ().
La funcion min.base () crea un nuevo entorno local dentro de la una de calculate.eff () que contiene un solo objeto z con el valor de X.
min.base () busca el objeto control en el entorno de calculate.eff () y resta la media de este vector a partir de cada número de z. A continuación, se devuelve este valor.
Lo mismo ocurre de nuevo, pero esta vez z Obtiene el valor de y.
Ambos resultados se dividen por otros, y la resultado se transmite al medio ambiente mundial de nuevo.
El entorno local está integrado en el entorno en el que se define la función, no donde se llama. Supongamos que usted usa addPercent () dentro calculate.eff () para dar formato a los números. El entorno local creado por addPercent () no se incrusta en la de calculate.eff () pero en el entorno mundial, donde addPercent () se define.