2012-10-11 11 views
5

Non ha senso che approx restituisca una lista, poiché - se ho capito bene - i due elementi della lista che restituisce sono garantiti per essere numerici e di uguale lunghezza. Detto questo, sembra più sensato restituire un array o un frame di dati.Perché restituisce un elenco piuttosto che un frame o un array di dati?

Sto scrivendo alcune funzioni utilizzando approx e questo mi rende cosa che non capisco completamente come funziona. C'è una situazione in cui una lista è necessaria, o meglio?

+1

Sono stumped ... –

+1

Capisco il sentimento, ma non riesco a capire perché c'è una reale differenza pratica tra le due opzioni. – joran

+0

Per la maggior parte non c'è una grande differenza pratica tra i due - tranne che i frame di dati sono più facili da inserire nei grafici in alcuni casi. Per me il problema più grande è che sembra strano, il che mi fa pensare che non capisco correttamente 'approx', che potrebbe causare problemi in seguito. –

risposta

5

Le funzioni accettano i pairlist come argomenti. Generalmente gli elenchi vengono utilizzati per passare argomenti alla grafica lattice, che era l'ambiente grafico dominante di alto livello prima dello ggplot ei discendenti venivano avanti. Gli elenchi vengono anche utilizzati per passare i parametri per controllare gli argomenti in molte funzioni. In questo caso ci si aspetta i x e y lunghezze per essere lo stesso, in modo che potrebbe essere un dataframe, ma non c'è nessun motivo particolare per chiedere una tale struttura, e le funzioni di base points e lines accetterà le liste con nome e adeguatamente assegnarli alle loro liste di argomenti.

( non credo che una matrice potrebbe ottenere correttamente distribuita alla x e gli argomenti y della base tracciando routine anche della c'erano nomi di riga o colonna che hanno abbinato. matrici sono davvero vettori piegati.)

Quindi penso che la risposta sia che le liste di passaggio sono più coerenti con il modo in cui la programmazione funzionale è implementata in R.

+0

sì, ma ... le matrici a due colonne, i frame di dati e gli elenchi con gli elementi 'x' e' y' vengono gestiti correttamente dalla maggior parte delle funzioni di tracciamento di base, grazie a'? Xy.coords' ... –

+1

Bene, i dataframes sono elenchi, ma con overhead aggiuntivo. Non vedo alcun motivo per cui passare come lista sia inferiore. Se si guarda il codice 'xy.coords' si vede che un dataframe verrebbe gestito dalla stessa sezione di codice di un elenco. –

+0

sì, ma potrebbe essere bello poter chiedere (per esempio) 'approx (x, y) [2: 5,]' (cioè indice per riga), che sarebbe molto più fastidioso con le liste che con i frame di dati. –

Problemi correlati