2012-10-11 12 views
5

Nie ma dla mnie sensu, aby approx zwrócił listę, ponieważ - jeśli rozumiem to poprawnie - dwa elementy listy, które zwraca, są gwarantowane numeryczne i mają taką samą długość. Biorąc pod uwagę to, wydaje się, że bardziej sensowne jest zwrócenie tablicy lub ramki danych.Dlaczego ok zwraca listę zamiast ramki danych lub tablicy?

Piszę niektóre funkcje przy użyciu approx, a to czyni mnie rzeczą, że nie w pełni rozumiem, jak to działa. Czy istnieje sytuacja, w której lista jest konieczna, lub lepiej?

+1

Jestem zaskoczony ... –

+1

Rozumiem sentyment, ale nie rozumiem, dlaczego istnieje jakaś praktyczna różnica między dwiema opcjami. – joran

+0

W przeważającej części nie ma dużej praktycznej różnicy między tymi dwoma - z tym wyjątkiem, że ramki danych są łatwiejsze do podłączenia do działek w niektórych przypadkach. Dla mnie większym problemem jest to, że wydaje się dziwne, co sprawia, że ​​myślę, że nie rozumiem poprawnie "approx", co może powodować później problemy. –

Odpowiedz

5

Funkcje pobierają pary jako argumenty. Zwykle listy są używane do przekazywania argumentów do grafiki lattice, która była dominującym środowiskiem graficznym wysokiego poziomu przed ggplot i pojawili się potomkowie. Listy są również używane do przekazywania parametrów w celu kontrolowania argumentów w wielu funkcjach. W tym przypadku można oczekiwać, że długości x i y będą takie same, więc może to być może być, być ramką danych, ale nie ma żadnego szczególnego powodu, aby wymagać takiej struktury, a funkcje podstawowe będą przyjmować nazwane listy i poprawnie. przydzielić je do ich list argumentów.

( Nie sądzę matrycę mógł się prawidłowo rozmieszczone na xiy argumentów podstawy kreślenia rutyny nawet istniały wierszu lub kolumnie nazwy, które dopasowane. Macierze są bardzo złożone wektory.)

Więc myślę, że odpowiedź jest taka, że ​​przekazywanie list jest najbardziej spójne z tym, jak programowanie funkcjonalne jest realizowane w R.

+0

tak, ale ... macierze dwukolumnowe, ramki danych i listy z elementami 'x' i' y' wszystkie są poprawnie obsługiwane przez większość podstawowych funkcji kreślenia, dzięki '? Xy.coords' ... –

+1

Cóż, dataframes _are_ list, ale te z dodatkowym narzutem. Nie widzę powodu, dla którego podanie jako listy jest gorsze. Jeśli spojrzysz na kod 'xy.coords' zobaczysz, że ramka danych byłaby obsługiwana przez tę samą sekcję kodu co lista. –

+0

Tak, ale dobrze byłoby móc poprosić o (powiedzmy) 'approx (x, y) [2: 5,]' (tj. Indeks po wierszu), co byłoby dużo bardziej irytujące dla list niż dla ramek danych. –

Powiązane problemy