2012-05-10 3 views
23

Прошу прощения, поскольку я знаю, что этот ответ, скорее всего, содержится в руководствах по написанию R-пакета, но в моем чтении и просмотре полей сопоставления другого пакета я не могу понять, на что это поле соответствует 100% , На простом языке (мой английский), что делает поле Collate в файле описания пакета? Что можно было бы там поместить?Поле сопоставления в пакете Описание

ответ

22

Я думаю, что это происходит из-за времени и ситуации, когда заказ, в котором находились файлы в каталоге R/ (в отличие от lexicographic default), по-прежнему имел значение. Аналогичная причина, почему функция .onLoad() часто находится в файле с именем zzz.R.

Для чего это не стоит, ни один из моих пакетов не использует поле «Собрать:» в ОПИСАНИИ.

Edit: И, как мы любили эмпирических мер, вот быстрый grep на машине со всеми источниками CRAN:

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

Так что 7,7% всех пакетов. Я действительно не стал бы беспокоиться об этом, если вы не действительно должен.

+0

Спасибо, тонна, это полезно. –

+8

Около 30% пакетов Bioconductor имеют поле Collate. Не уверен, что «с течением времени» оставляет правильное впечатление, все еще организует код в файлы, и порядок, который файлы сопоставляют, имеет значение. Например, методы S4 должны быть определены после дженериков, а классы должны быть определены до тех методов, которые используют их, или классов, которые их содержат. Извращенность лексикографической сортировки в не-C-локациях заставляет остерегаться полагаться на автоматический порядок сортировки (возможно, R сопоставляет файлы в языке C, слишком тонкие для меня). –

+0

Hah - Я почти добавил, что это может иметь какое-то отношение к классам S4 (что я, как правило, все еще не использую так много ...) Но даже тогда можно, конечно, иметь классы, дженерики, методы в этом порядке в тот же файл, что и в Rcpp. Итак, Collate: остается полезным, если редко используется, и Тайлер не пропускал ничего существенного. –

Смежные вопросы