2012-05-10 12 views
23

Przepraszam, ponieważ wiem, że ta odpowiedź jest prawdopodobnie w podręcznikach do pisania paczki R, ale w moim czytaniu i przeglądaniu pól Collate innych paczek nie mogę wykombinować w 100%, do czego służy to pole . W prostym języku (mój jest angielski), co robi pole Collate w pliku opisu pakietu? Co chciałbyś tam umieścić?Pole Collate w paczce Opis

Odpowiedz

22

Myślę, że pochodzi on z czasu i sytuacji, w której liczyła się kolejność, w której pliki z katalogu R/ pochodziły (w przeciwieństwie do domyślnego leksykografii). Podobny powód, dla którego funkcja .onLoad() jest często w pliku o nazwie zzz.R.

Za to, co jest warte, żaden z moich pakietów nie używa pola "Sortuj" w DESCRIPTION.

Edit: A jak jesteśmy lubiący środków empirycznych, tutaj jest szybkie grep na maszynie ze wszystkich źródeł Cran:

$ grep ^Collate */DESCRIPTION | wc -l 
292 
$ ls -1 */DESCRIPTION | wc -l 
3779 

Więc to jest 7,7% wszystkich pakietów. Naprawdę nie przejmowałbym się tym, chyba że musisz naprawdę.

+0

Dziękuję za tonę, to jest pomocne. –

+8

Około 30% pakietów Bioconductor ma pole Collate. Nie jestem pewien, czy "od pewnego czasu" pozostawia prawidłowe wrażenie, ale nadal porządkuje kod w pliki, a kolejność sortowania plików jest ważna. Np. Metody S4 muszą być zdefiniowane po generycznych, a klasy powinny być zdefiniowane przed metodami, które ich używają, lub klasami, które je zawierają. Nadmierność sortowania leksykograficznego w lokalizacjach nie należących do C sprawia, że ​​ktoś nie chce polegać na automatycznym porządku sortowania (być może R zestawia pliki w lokalizacji C - zbyt subtelne dla mnie). –

+0

Hah - Prawie dodałem, że może to mieć coś wspólnego z klasami S4 (których ogólnie nie używam aż tak bardzo ...) Ale nawet wtedy można oczywiście mieć klasy, generyczne, metody w tej kolejności w taki sam plik jak w Rcpp. So Collate: pozostaje użyteczną, jeśli rzadko używaną opcją, a Tylerowi nie brakowało niczego istotnego. –