Ustawianie domyślnych funkcji R na podstawie konkretnego projektu

Zwykle używam tych samych ustawień funkcji. Zastanawiam się, czy istnieje metoda, inna niż nowy obiekt w ścieżce, która jest zasadniczo opakowaniem dla funkcji, aby ustawić domyślne argumenty. Na przykład:

paste() Czy to sep argument ustawiony na spację =" ", jestem zmęczony pisaniem ,sep="" w kółko. Czy istnieje sposób na" tymczasowe " zastąpienie funkcji wybranymi ustawieniami domyślnymi?

paste(...,sep="") 

Czy Mogę to osiągnąć poprzez opakowanie? Czasami zauważyłem, że niektóre Pakiety zmuszają inne równie nazwane funkcje do maskowania w środowisku globalnym.

Idealnie, chciałbym coś, co może być ustawione na podstawie projektu po projekcie w (load.r lub jakiś inny taki workflow startpoint)

Author: smci, 2012-01-31

2 answers

Pakiet Defaults używany do tego celu; wycofany w 2014 roku.

 11
Author: Vincent Zoonekynd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-29 06:34:32

Osobiście byłbymbardzo niezdecydowany, aby zmienić domyślne zachowanie dowolnych powszechnie używanych funkcji-zwłaszcza podstawowych funkcji R. Po pierwsze, natychmiast zmniejszy to przenośność skryptów lub fragmentów kodu, w których używasz ponownie zdefiniowanych funkcji. Co gorsza, inni użytkownicy r czytający Twoje skrypty będą prawdopodobnie: (A) nieświadomi Twoich prywatnych znaczeń dla znanych elementów języka lub (b) sfrustrowani koniecznością zmiany własnych oczekiwań dotyczących funkcji. Na dla mnie również byłoby to dodatkowym obciążeniem psychicznym, aby przyczepić różne znaczenia do tego samego symbolu w różnych ustawieniach.

Myślę, że znacznie lepszym rozwiązaniem jest tworzenie podobnie nazwanych funkcji implementujących preferowane wartości domyślne. Nieco zmodyfikowana nazwa skutecznie oznaczy, że nie jest to znana funkcja bazowa, bez obciążania Cię dużym lub dodatkowym typowaniem. Dobrym przykładem są funkcje paste0() i cat0() zawarte w pakiecie gsubfn. (Wyraźnie ty i nie tylko mnie (często) denerwuje domyślne ustawienie paste() sep!):

library(gsubfn)

paste0
# function (..., sep = "") 
# paste(..., sep = sep)
# <environment: namespace:gsubfn>

cat0
# function (..., sep = "") 
# cat(..., sep = sep)
# <environment: namespace:gsubfn>

Możesz następnie zebrać szereg tych funkcji w pliku tekstowym, pozyskując je na początku skryptu, lub (lepiej) spakować je i załadować za pomocą wywołania library().

 16
Author: Josh O'Brien,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-31 04:22:18