2010-08-14 23 views
25

Jak wyświetlić kod źródłowy w R? Na przykład dla funkcji portfolio.optimWyświetl kod źródłowy w R

> require(tseries) 
> portfolio.optim 
function (x, ...) 
UseMethod("portfolio.optim") 
<environment: namespace:tseries> 

> methods(portfolio.optim) 
[1] portfolio.optim.default* portfolio.optim.ts*  

Non-visible functions are asterisked 
> portfolio.optim.ts 
Error: object 'portfolio.optim.ts' not found 
> portfolio.optim.default 
Error: object 'portfolio.optim.default' not found 

Kiedy zainstalować pakiet R lokalnie, to pobranie kodu źródłowego, jak również? Gdzie jest przechowywany na komputerze? Czy ktoś wie?

+3

Zobacz także: Uwe Ligges, "R Help Desk: Dostęp do źródeł" _R News_, 6 (4): 43-45, październik 2006. http://cran.r-project.org/doc/Rnews/Rnews_2006 -4.pdf –

Odpowiedz

30
  1. W odpowiedzi na Non-visible functions are asterisked, oznacza to, że rzeczywiste funkcje, które są wysyłane na ts lub domyślnych obiektów, odpowiednio, są w przestrzeni nazw tseries ale nie eksport. Po prostu wpisz tseries:::portfolio.optim.default i zobaczysz kod funkcji po określeniu pełnej poprawki zawierającej obszar nazw.

  2. Określa, czy źródło pobranych plików źródłowych lub plików binarnych zależy od systemu operacyjnego. W obu przypadkach źródło dla tseries package is available. Czytanie kodu źródłowego napisanego przez doświadczonych programistów to dobry sposób na naukę.

+0

Nie mogę wyświetlić kodu źródłowego dla funkcji 'lu' w pakiecie' Matrix'. Czy możesz rzucić okiem? – user236215

22

Funkcja getAnywhere jest pomocna, gdy nie wiadomo, w którym obszarze nazw jest funkcja.

Opisane w manual lub w funkcji help page.

15

Co można zrobić dla większości funkcji, to wprowadzić zmienił (functionName) w oknie poleceń w R. Gdzie wypełnić functionName z nazwą.

W rezultacie można uzyskać kod źródłowy funkcji. Jednak próbowałem go dla funkcji portfolio.optim, więc nie działa. Możliwe tylko dla standardowych funkcji.

+0

Dlaczego upadek? Przetestowałem to i działa na funkcji biblioteki. –

+0

Wyświetla ładne okno w RStudio. +1! –

5

Jeśli to, co chcesz zobaczyć, jest źródłem określonej metody, masz kilka opcji. Jednym z nich jest użycie debugowania (portfolio.optim). Następnie, gdy uruchomisz funkcję na obiekcie, powinna ona przejść krok po kroku przez metodę, wypisując kod w trakcie jego działania. Użyj "n", aby go przejść i nie zapomnij użyć undebug (portfolio.optim) kiedy skończysz.

Możesz również pobrać źródło pakietu, którego potrzebujesz, rozpakuj go i poszukaj plików o obiecujących nazwach (takie podejście jest trudne, ponieważ funkcja, której szukasz, może być napisana w języku C!). Jest to łatwiejsze niż szukanie kodu w pliku binarnym. Jeśli wybierasz tę trasę, kod powinien być dostępny tylko w skompresowanym folderze, gdziekolwiek pobrałeś.

+0

wow. bardzo ci dziękuję za tę funkcję 'debugowania'. To jest zajebiste! –