我同样可以给这个问题加上标题,“对于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形式在Internet上的某个位置提供这些内容(例如,将它们作为纯文本功能发布在博客上不是我想要的),以便维护更容易,以便我和其他人可以访问我可以从任何一台计算机上访问它们。逻辑上的事情是用它们制作一个程序包,然后将它们发布到CRAN中-实际上我已经将它们打包了。但是,此功能集合是否适合CRAN软件包?

我有两个主要问题:
  • 函数似乎没有任何连贯的覆盖层。只是一个
    做许多不同事情的功能的集合。
  • 我的代码并不总是最漂亮的。我试着清理它
    学会了更好的编码实践,但是产生了R核心值(value)的美丽
    卡中没有代码。

  • CRAN网页出人意料地失去了发布指南。考虑到某些人会发现它有用,但从某种意义上说它将永远锁定R使其占用一些非常基本的函数名,因此我应该发布到CRAN吗?还是有另一个地方可以使用类似install.packages的命令进行安装?请注意,我宁愿避免将软件包发布到网页上,而要让人们记住要安装软件包的URL(尤其是版本控制问题)。

    最佳答案

    大多数软件包应该是具有明显目的的相关功能的集合,因此,要做的一件有用的事情是尝试将您所拥有的东西归为一组,看看是否可以对其进行分类。几个较小的程序包比一个巨大的非相干程序包要好。

    就是说,有些软件包是杂项实用程序功能的集合,最著名的是Hmiscgregmisc,所以可以做这种事情。如果您只有一些这样的功能,可能值得联系某些杂项软件包的作者,看看它们是否会让您将代码包含在其软件包中。

    至于编写漂亮的代码,您可以做的最重要的事情就是使用a style guide

    09-11 04:58
    查看更多