Я мог бы точно так же озаглавить этот вопрос: «Достаточно ли этого для CRAN?»
У меня есть набор функций, которые я создал для конкретных задач. Некоторые из них - вспомогательные функции:
# Returns odds/evens from a vector
odds=function(vec) {
stopifnot(class(vec)=="integer")
ret = vec[fpart(vec/2)!=0]
ret
}
evens=function(vec) {
stopifnot(class(vec)=="integer")
ret = vec[fpart(vec/2)==0]
ret
}
Некоторые из них представляют собой незначительные дополнения, которые оказались полезными при ответе на распространенный вопрос SO:
# Shift a vector over by n spots
# wrap adds the entry at the beginning to the end
# pad does nothing unless wrap is false, in which case it specifies whether to pad with NAs
shift <- function(vec,n=1,wrap=TRUE,pad=FALSE) {
if(length(vec)<abs(n)) {
#stop("Length of vector must be greater than the magnitude of n \n")
}
if(n==0) {
return(vec)
} else if(length(vec)==n) {
# return empty
length(vec) <- 0
return(vec)
} else if(n>0) {
returnvec <- vec[seq(n+1,length(vec) )]
if(wrap) {
returnvec <- c(returnvec,vec[seq(n)])
} else if(pad) {
returnvec <- c(returnvec,rep(NA,n))
}
} else if(n<0) {
returnvec <- vec[seq(1,length(vec)-abs(n))]
if(wrap) {
returnvec <- c( vec[seq(length(vec)-abs(n)+1,length(vec))], returnvec )
} else if(pad) {
returnvec <- c( rep(NA,abs(n)), returnvec )
}
}
return(returnvec)
}
Наиболее важными являются расширения существующих классов, которые нельзя найти где-либо еще (например, функция панели CDF для графиков решетки, различные функции вывода xtable и LaTeX, классы для обработки и преобразования между типами геопространственных объектов и выполнения различных операций, подобных ГИС, таких как как накладки).
Я хотел бы сделать их доступными где-нибудь в Интернете в R-ized форме (например, размещение их в блоге, поскольку функции обычного текста - это не то, что я ищу), чтобы упростить обслуживание и чтобы я и другие могли получить доступ их с любого компьютера, к которому я захожу. Логично сделать из них пакет и отправить в CRAN - и действительно, они у меня уже упакованы. Но подходит ли этот набор функций для пакета CRAN?
У меня две основные проблемы:
- Кажется, что у функций нет какого-либо связного наложения. Это просто набор функций, которые делают много разных вещей.
- Мой код не всегда самый красивый. Я пытался очистить его, изучая лучшие методы кодирования, но создание красивого кода, достойного R Core, не подходит.
На веб-странице CRAN на удивление отсутствуют инструкции по размещению сообщений. Следует ли мне публиковать сообщения в CRAN, учитывая, что некоторые люди сочтут это полезным, но в каком-то смысле навсегда заблокируют R, чтобы он использовал некоторые довольно простые имена функций? Или есть другое место, где я могу использовать команду, похожую на install.packages, для установки? Обратите внимание: я бы предпочел не размещать пакет на веб-странице и не заставлять людей запоминать URL-адрес для установки пакета (не в последнюю очередь для проблем с контролем версий).