zoukankan      html  css  js  c++  java
  • 如何打包R源代码

    我在网上看了许多关于R打包的一些方法,我针对我在打包中遇到的问题谈一谈。

    编写R程序包通常包括以下几步:

    (1工具软件Rtools的安装和备选软件的安装。

    (2)r脚本的准备,也就是用来生成程序包的函数脚本。

    (3)利用R中自带的package.skeleton()函数,生成制作包所需要的Description 文件和帮助文件帮助文件.rd。

    (4)编辑该函数生成的Description 文件和帮助文件.rd

    (5)在windows cmd的命令行中输入相应的命令,生成zip文件或者.tar.gz

    一 工具软件安装和配置

    制作r包的工具软件包括Rtools,HTML编译器(R2.10后不需要HTML编译器),MikTeX 或 Ctex (备选软件不一定要安装)

    1 工具软件安装

    (1)Rtools(制作R包的主要工具)

    Rtools是在windows下制作R包的一系列工具,其中包括

    1)      CYGWIN 在Windows下模拟UNIX环境

    2)      MinGW编译器,可用来编译C和Fortran语言。

    3)      Perl 下载地址: http://www.murdoch-sutherland.com/Rtools/

    (2) 微软HTML编译器(备选):

    用来从源文件生成HTML格式的帮助文件(2.10以后的版本则不需要)

    下载地址:http://go.microsoft.com/fwlink/?LinkId=14188

    (3) MikTeX

    用来PDF格式的帮助文件下载地址:http://www.miktex.org/      www.ctex.org/ 

    分别按照要求安装好。

    2 设置文件启动路径:

    设置启动路径的目的是在cmd命令行可以直接调用Rtools。右键点击:

    我的电脑>属性>高级>环境变量>系统变量  PATH一项,点击“编辑”,检查是否具有以下路径,如果没有,需要手工添加:

    D:RR3.0.3R-3.0.3inx64Rcmd.exe;D:RR3.0.3R-3.0.3inx64;D:Rtoolsin;D:Rtoolsgcc-4.6.3in;D:Perl64sitein;D:Perl64in;D:ProgramFilesRR-3.1.3in;D:ProgramFilesRR-3.1.3ini386Rcmd.exe; C:Windowssystem32;C:Windows;C:WindowsC:Program FilesCommon FilesAutodeskShared; D:MIKETEXmiktexinx64

    二 R脚本的准备

    假如现在我们已经有了一个编好的R函数linmod,用来给出回归的精确结果,存成了r脚本的格式,文件名为linmod.r

    其内容如下所示,那么该如何制作R程序包呢?

    linmod<- function(x, y)

    {

    qx <- qr(x)

    coef <- solve.qr(qx, y)

    df <- nrow(x)-ncol(x)

    sigma2 <- sum((y - x%*%coef)^2)/df

    vcov <- sigma2 * chol2inv(qx$qr)

    colnames(vcov) <- rownames(vcov) <- colnames(x)

    list(coefficients = coef,

    vcov = vcov,

    sigma = sqrt(sigma2),

    df = df)

    }

    三 R包框架的准备

    1 生成准备文件

    登陆R :开始>所有程序>R>R.3.0.3

    (1)清除内存中的对象: rm(list=ls())

    (2)设定工作目录,这里设定为 setwd("c:/pa")
    (3)将制作包的源文件 linmod.r拷贝到c:/pa/文件夹下,

    之后输入:(注R工作界面最好是英文,中文有时候会出错)

    package.skeleton(name="linmod",code_files="c:/pa/linmod.r")

    此时,R控制台中显示

    Creating directories ...

    Creating DESCRIPTION ...

    Creating Read-and-delete-me ...

    Saving functions and data ...

    Making help files ...

    Done.

    Further steps are described in './linmod/Read-and-delete-me'.

    可以看到c:/pa文件夹下新出现了一个linmod文件夹

    该文件夹下的内容就是R包的框架,包括data文件夹,man文件夹,R,DESCRIPTITION,NAMESPACE,Read-and-delet-me,其中namespac和Read-and-delet-me是不需要我们去编译的,这两个文件是不重要的东西,没有必要去修改。重要的是man文件,当导入该包时,包里面的内容将会在help中显示出来。Description是大致描述该包的内容

    2,编辑Description文件和rd文件

    (1) Description文件的编辑

    按照提示,填好各项

    Description文件是该程序包的简介,这一格式是Debian Linux的作者发明的。内容如下:

    ####################################

    Package: linmod

    Type: Package

    Title: test for linear regression

    Version: 1.0

    Date: 2009-07-20

    Author: helixcn

    Maintainer: helixcn

    Description: To give the exactly results of linear regression.

    License: GPL (>= 2) (包的执照最好填写这个)

    LazyLoad: yes

    #####################################

    (2)man文件夹中.rd文件编辑

    man文件夹中包含两个文件 linmod.Rd和linmod-package.Rd,分别是对linmod()函数和linmod包的介绍,下面逐项填写:

    1) linmod.RdRd文件的格式与Tex的格式很像,如果有LaTex的基础,则会毫不费力。如果没有,则需要仔细琢磨一下了。

    ame{linmod}

    Rdversion{1.1}

    alias{linmod}

    %- Also NEED an 'alias' for EACH other topic documented here.

    itle{

    linear regression

    }

    description{

    to give the more exactly results of linear regression

    }

    usage{

    linmod(x, y)

    }

    arguments{

      item{x}{

    a numeric design matrix for the model

    }

      item{y}{

    a numeric vector of responses

    }

    }

    details{

    }

    eferences{

    Friedrich Leisch,2008 Creating R Packages: A Tutorial

    }

    author{

    helixcn

    }

    ote{

    Please read Friedrich Leisch,2008

    }

    examples{data(cats, package="MASS")

    mod1 <- linmod(Hwt~Bwt*Sex, data=cats)

    mod1

    summary(mod1)}

    keyword{ ~kwd1 }

    keyword{ ~kwd2 }% __ONLY ONE__ keyword per line

    2)linmod-package.Rd##########################################################

    ame{linmod-package}

    Rdversion{1.1}

    alias{linmod-package}

    alias{linmod}

    docType{package}

    itle{Linear Regression Modification}

    description{to Give the more exactly output of linear regression rather than R default}

    details{

    abular{ll}{

    Package: ab linmodcr

    Type: ab Packagecr

    Version: ab 1.0cr

    Date: ab 2009-07-20cr

    License: ab GNU 2.0 or latercr

    LazyLoad: ab yescr

    }

    }

    author{helixcn

    Maintainer: helixcn }

    eferences{

    Friedrich Leisch,2008,Creating R Packages: A Tutorial

    }

    seealso{lm}

    examples{

    data(cats, package="MASS")

    mod1 <- linmod(Hwt~Bwt*Sex, data=cats)

    mod1

    summary(mod1)

    }

    #注意:在Rd文件中,不要出现ASCII码以外的内容,否在在Rcmd check中将不能通过。

    四 通过cmd创建R包在Windows下

    开始>运行>cmd

    键入 cd c:pa   将工作目录转移到c:/pa下

    键入 Rcmd INSTALL --build linmod   (一定要注意build后面有一个空格,一定别忘记了,不然就会出错) 制作window zip包

    键入 Rcmd build linmod  制作linux平台下可运行的tar.gz包命令运行完之后可以发现,在c:/pa/文件夹下分别生成了linmod.zip和linmod.tar.gz压缩包。键入 Rcmd check linmod 对linmod程序包源代码中的各项内容进行检查。键入 Rcmd Rd2pdf linmod 生成pdf格式的命令手册。如果作者希望将自己制作的Package上传到CRAN,则必须要通过Rcmd check,并且其中不能有任何错误或警告。

    五,可以在cmd下运行整个打包过程:

      在cmd中进入你所安装的R.exe文件,我电脑里的安装目录:

    D:RR3.0.3R-3.0.3inx64

    回车之后

    D:RR3.0.3R-3.0.3inx64>R.exe

    就进入虚拟环境进行操作,为该包装骨架,及输入package.skeleton(name="linmod",code_files="c:/pa/linmod.r")

    ,即在文件夹下多出现一个linmod包,在quit()退出R操作,

    在键入cd c:pa   将工作目录转移到c:/pa下

    键入Rcmd check linmod 进行核查,核查是不是有错误,有error的地方需要改正

    键入 Rcmd INSTALL --build linmod 即可打包,

    参考网址

    [1] http://www.robjhyndman.com/researchtips/building-r-packages-for-windows

    [2] http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf

    [3] http://www.biostat.uni-hannover.de/teaching/fallstudien/schaarschmidt2.pdf 

    还有一种R打包的简单方式加载devtools包  :http://cos.name/2013/11/building-r-packages-easily/

  • 相关阅读:
    @Autowired mapper 层次 bean 带红线
    java 类加载机制 阿里面试题
    liunx 修改ssh 端口22
    通过mysqlbinlog 恢复数据
    网页命名规则
    子选择符 、相邻选择符 、 兄弟选择符 、 伪类选择符
    css的一些基础知识
    HTML5的表单所有type类型
    一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10(复制)
    网站开发最常用的代码(复制)
  • 原文地址:https://www.cnblogs.com/yupeter007/p/4826321.html
Copyright © 2011-2022 走看看