この質問に「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出力関数、地理空間オブジェクトタイプ間の処理と変換、およびさまざまなGISのような操作を実行するためのクラスなど)オーバーレイとして)。
これらをインターネット上のどこかでR化された形式で利用できるようにしたい(たとえば、プレーンテキスト関数は私が探しているものではないのでブログに投稿する)。これにより、メンテナンスが簡単になり、私や他の人がアクセスできるようになります。私が行くどんなコンピュータからでもそれら。論理的なことは、それらからパッケージを作成してCRANに投稿することです。実際、私はすでにそれらをパッケージ化しています。しかし、この関数のコレクションはCRANパッケージに適していますか?
私には2つの主な懸念があります:
- 関数には一貫したオーバーレイがないようです。これは、さまざまなことを実行する関数のコレクションにすぎません。
- 私のコードは必ずしもきれいではありません。より良いコーディング方法を学んだので、それをクリーンアップしようとしましたが、Rコアに値する美しいコードを作成することはカードに含まれていません。
CRANのWebページには、驚くべきことに投稿に関するガイドラインがありません。一部の人々はそれが便利だと思うが、ある意味でRを永久にロックして、かなり基本的な関数名を取り上げさせることを考えると、CRANに投稿する必要がありますか?または、install.packagesのようなコマンドを使用してインストールできる別の場所はありますか?パッケージをWebページに投稿したり、パッケージをインストールするためにURLを覚えておく必要があることは避けたいことに注意してください(特にバージョン管理の問題の場合)。