2012-10-11 145 views
5

No tiene sentido para mí que approx devuelva una lista, ya que, si lo entiendo correctamente, se garantiza que los dos elementos de la lista que devuelve son numéricos y de igual longitud. Dado eso, parece tener más sentido devolver una matriz o un marco de datos.¿Por qué devuelve aproximadamente una lista en lugar de un marco de datos o matriz?

Estoy escribiendo algunas funciones usando approx, y esto me hace pensar que no entiendo completamente cómo funciona. ¿Hay alguna situación en la que una lista sea necesaria o mejor?

+1

Estoy perplejo ... –

+1

Entiendo el sentimiento, pero no veo por qué hay una diferencia práctica real entre las dos opciones. – joran

+0

En la mayoría de los casos, no hay una gran diferencia práctica entre los dos, excepto que los marcos de datos son más fáciles de conectar en parcelas en algunos casos. Para mí, el problema más grande es que parece extraño, lo que me hace pensar que no entiendo 'aproximadamente 'correctamente, lo que podría causarme problemas más adelante. –

Respuesta

5

Las funciones toman las listas de contactos como argumentos. En general, las listas se utilizan para pasar argumentos a los gráficos lattice, que era el entorno de gráficos de alto nivel dominante antes del ggplot y aparecieron los descendientes. Las listas también se usan para pasar parámetros para controlar argumentos en muchas funciones. En este caso se esperaría que el x y y longitudes a ser el mismo, por lo que podría ser una trama de datos, pero no hay ninguna razón particular para exigir una estructura de este tipo, y las funciones de base points y lines aceptará listas con nombre y debidamente asignarlos a sus listas de argumentos.

( No creo una matriz podría conseguir distribuido correctamente a la X y argumentos Y de la base de trazado de rutinas incluso de allí eran de fila o columna nombres que hacían juego. matrices se vectores realmente cruzados.)

Así que creo que la respuesta es que las listas de aprobación son más consistentes con la forma en que se implementa la programación funcional en R.

+0

sí, pero ... las matrices de dos columnas, los marcos de datos y las listas con los elementos 'x' y' y' son manejados correctamente por la mayoría de funciones de trazado base, gracias a '? Xy.coords' ... –

+1

Bueno, dataframes _are_ lists, pero unos con gastos adicionales. No veo ninguna razón por la cual pasar como una lista es inferior. Si observa el código 'xy.coords', verá que un marco de datos sería manejado por la misma sección de código que una lista. –

+0

sí, pero sería bueno poder pedir (decir) 'approx (x, y) [2: 5,]' (es decir, índice por fila), lo que sería mucho más molesto con las listas que con los marcos de datos. –

Cuestiones relacionadas