Cómo enviar a un método en el r

Una herramienta útil cuando se trata de funciones en R está enviando a un método. Una cosa para recordar acerca de las funciones en materia de I es que una función puede dar un resultado diferente, basado en el tipo de valor que usted da los argumentos R tiene un sistema de genio, llamado sistema de función genérica,

que le permite llamar a diferentes funciones con el mismo nombre.

Piense en los marcos y listas de datos. Si imprime una lista en la consola, se obtiene la salida dispuestos en filas. Por otro lado, una trama de datos está impreso a la consola dispuestos en columnas. Entonces el impresión() función trata listas y cuadros de datos diferente, pero las dos veces que utiliza la misma función.

Encuentra los métodos detrás de la función

Es fácil saber si se ha utilizado la misma función en ambas ocasiones - sólo mirar dentro del código de función de impresión() escribiendo su nombre en la línea de comandos, así:

> Printfunction (x, ...) UseMethod ("print")

Puede ignorar las dos últimas líneas, ya que sólo se utilizan por los desarrolladores R. Pero echar un vistazo en el cuerpo de la función - es sólo una línea!

Funciones que no hacen mucho más que la transmisión de los objetos a la función de la derecha se llaman funciones genéricas. En este ejemplo, impresión() es una función genérica. Las funciones que hacen el trabajo real se llaman métodos.

Use métodos con UseMethod

¿Cómo diablos puede que una línea de código en el impresión() función de hacer tantas cosas complejas como vectores de impresión, cuadros de datos y listas de todos de una manera diferente?

La respuesta está contenida en el UseMethod () función, que es la función central en el sistema de función genérica de R. UseMethod () dice R para moverse a lo largo y buscar una función que puede lidiar con el tipo de objeto que se da como argumento X.

R hace que al mirar a través de la serie completa de funciones en busca de otra función que comienza con impresión seguido de un punto y luego el nombre del tipo de objeto.

Puede hacerlo usted mismo usando el comando a propósito ('print .'). Entre las comillas, usted puede poner una expresión regular al igual que en el grep () función. Con el fin de contar R que el punto realmente significa un punto, usted tiene que preceder con dos barras invertidas. No se sorprenda cuando recibe más de 40 diferentes impresión() funciones para todo tipo de objetos.

Suponga que tiene una trama de datos que desea imprimir. R buscará la función print.data.frame () y utilizar esa función para imprimir el objeto que ha pasado como argumento. También puede llamar a esa función a sí mismo de esta manera:

> Small.one lt; - data.frame (a = 1: 2, b = 2: 1)> print.data.frame (small.one) un b1 1 22 2 1

El efecto de esa función se diferencia en nada de lo que se obtendría si utilizó el genérico print (small.one) funcionar en su lugar. Es porque impresión() dará a la uno pequeño al print.data.frame () funcionar para cuidar de él.

Métodos de uso por defecto

En el caso de una lista, usted puede tener la tentación de buscar un print.list () función. Pero no va a funcionar, porque el print.list () función no existe. Sin embargo eso no es un problema para R - R ignorará el tipo de objeto en ese caso y sólo tiene que buscar un método por defecto, print.default ().

Para muchas funciones genéricas, hay un método por defecto que se utiliza si no hay método específico se puede encontrar. Si no hay uno, puede reconocer el método predeterminado por la palabra por defecto después de que el punto en el nombre de la función.

Por lo tanto, si desea imprimir la trama de datos como una lista, utilice el método por defecto de esta manera:

> Print.default (small.one) $ a [1] 1 2 $ b [1] 2 1attr ("clase") [1] "data.frame"



» » » » Cómo enviar a un método en el r