Я мог бы также озаглавить этот вопрос: «Достаточно ли это хорошо для 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-форме (например, публикация их в блоге в виде простых текстовых функций - это не то, что мне нужно), чтобы их обслуживание было проще и чтобы я и другие могут получить к ним доступ с любого компьютера, на который я захожу. Логичная вещь - сделать из них пакет и опубликовать его в CRAN - и я действительно уже упаковал его. Но подходит ли этот набор функций для пакета CRAN?
У меня есть две основные проблемы:
- Кажется, что функции не имеют никакого связанного наложения. Это просто
коллекция функций, которые делают много разных вещей.
- Мой код не всегда самый красивый. Я пытался очистить его, как я
выучил лучшие практики кодирования, но создавал R Core-достойный красивый
код отсутствует в карточках.
На веб-странице CRAN неожиданно отсутствуют руководящие принципы размещения. Должен ли я публиковать в CRAN, учитывая, что некоторые люди сочтут это полезным, но что в некотором смысле это навсегда заблокирует R для использования некоторых довольно простых имен функций? Или есть другое место, где я могу использовать команду install.packages-like для установки? Примечание. Я бы предпочел не публиковать пакет на веб-странице и не заставлять людей запоминать URL-адрес для установки пакета (не в последнюю очередь из-за проблем с управлением версиями).