开拓本身的R包sayHello
当前位置:以往代写 > 其他教程 >开拓本身的R包sayHello
2019-06-14

开拓本身的R包sayHello

开拓本身的R包sayHello

R的极客抱负系列文章,涵盖了R的思想,利用,东西,创新等的一系列要点,以我小我私家的进修和体验去诠释R的强大。

R语言作为统计学一门语言,一直在小众规模闪耀着光线。直到大数据的发作,R语言酿成了一门炙手可热的数据阐明的利器。跟着越来越多的工程配景的人的插手,R语言的社区在迅速扩大生长。此刻已不只仅是统计规模,教诲,银行,电商,互联网….都在利用R语言。

要成为有抱负的极客,我们不能逗留在语法上,要把握安稳的数学,概率,统计常识,同时还要有创新精力,把R语言发挥到各个规模。让我们一起动起来吧,开始R的极客抱负。

关于作者:

  • 张丹(Conan), 措施员Java,R,PHP,Javascript
  • weibo:@Conan_Z
  • blog: http://blog.fens.me
  • email: [email protected]
  • 开辟自己的R包sayHello

    媒介
    R是一个世界范畴开拓者配合协作的产品,至2013年2月共计近5000个包可在互联网上自由下载。此刻作为R的利用者,有朝一日也可以成为R的开拓者,把我们本身的常识做成R包分享给世界。

    本日我们简朴先容如何开拓本身R包。

    目次

    1. 系统情况
    2. vi中建造R包
    3. RStudio中建造R包

    1. 系统情况

    操纵系统:Linux Ubuntu 12.04.2 LTS 64bit
    R语言版本:R 3.0.1

    
    ~ uname -a
    Linux conan-deskop 3.5.0-23-generic #35~precise1-Ubuntu SMP Fri Jan 25 17:13:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
    
    ~ cat /etc/issue
    Ubuntu 12.04.2 LTS \n \l
    
    ~ R --version
    R version 3.0.1 (2013-05-16) -- "Good Sport"
    Copyright (C) 2013 The R Foundation for Statistical Computing
    Platform: x86_64-pc-linux-gnu (64-bit)
    
    R is free software and comes with ABSOLUTELY NO WARRANTY.
    You are welcome to Redistribute it under the terms of the
    GNU General Public License versions 2 or 3.
    For more information about these matters see
    
    http://www.gnu.org/licenses/.
    
    

    2. vi中建造R包

    建设目次:/home/conan/R/demo

    
    ~ mkdir /home/conan/R/demo
    ~ cd /home/conan/R/demo
    

    新建R剧本sayHello.R

    
    ~ vi sayHello.R
    sayHello<-function(name){
        print(paste("Hello",name))
    }
    

    自界说一个sayHello的函数,将作为自界说包的第一个函数。

    启动R措施

    
    ~ R
    
    #清空变量配置事情目次
    rm(list=ls())
    setwd("/home/conan/R/demo")
    
    #通过sayHello的剧本生成开拓包的骨架
    package.skeleton(name="sayHello",code_files="/home/conan/R/demo/sayHello.R")
    Creating directories ...
    Creating DESCRIPTION ...
    Creating NAMESPACE ...
    Creating Read-and-delete-me ...
    Copying code files ...
    Making help files ...
    Done.
    Further steps are described in './sayHello/Read-and-delete-me'.
    
    #退出R的客户端
    q()
    

    在当前目次生成sayHello目次

    
    ~ ls -l
    drwxrwxr-x 4 conan conan 4096  8月  1 15:07 sayHello
    -rw-rw-r-- 1 conan conan   59  8月  1 15:04 sayHello.R
    
    ~ ls -l sayHello
    -rw-rw-r-- 1 conan conan  281  8月  1 15:07 DESCRIPTION
    drwxrwxr-x 2 conan conan 4096  8月  1 15:07 man
    -rw-rw-r-- 1 conan conan   31  8月  1 15:07 NAMESPACE
    drwxrwxr-x 2 conan conan 4096  8月  1 15:07 R
    -rw-rw-r-- 1 conan conan  420  8月  1 15:07 Read-and-delete-me
    
    ~ ls -l sayHello/man
    -rw-rw-r-- 1 conan conan 1043  8月  1 15:07 sayHello-package.Rd
    -rw-rw-r-- 1 conan conan 1278  8月  1 15:07 sayHello.Rd
    
    ~ ls -l sayHello/R
    -rw-rw-r-- 1 conan conan 59  8月  1 15:07 sayHello.R
    

    文件及目次表明:

  • DESCRIPTION文件: 包描写文件
  • NAMESPACE文件: 包的定名空间文件
  • Read-and-delete-me文件: 说明文件,可以删除
  • man目次: 存放函数的说明文件的目次
  • R目次:存放源文件的目次
  • man/sayHello.Rd: sayHello函数的说明文件,latex语法,用来生成PDF文档
  • man/sayHello-package.Rd: sayHello包的说明文件,可以删除
  • 编辑DESCRIPTION文件:

    ~ vi sayHello/DESCRIPTION
    Package: sayHello
    Type: Package
    Title: R package demo for sayHello
    LazyLoad: yes
    Author: Dan Zhang
    Maintainer: Dan Zhang
    Description: This package provides a package demo
    License: GPL
    Version: 1.0
    Date: 2013-07-31
    Depends: R (>= 3.0.1)
    @gmail.com>

    编辑NAMESPACE文件:

    ~ vi sayHello/NAMESPACE
    exportPattern("^[[:alpha:]]+")
    

    编辑sayHello.Rd文件:

    ~ vi sayHello/man/sayHello.Rd
    \name{sayHello}
    \alias{sayHello}
    \title{a sayHello function demo}
    \description{
    a sayHello function demo
    }
    \usage{
    sayHello(name)
    }
    \arguments{
      \item{name}{a word}
    }
    \details{
    nothing
    }
    \value{
    no return
    }
    \references{
    nothing
    }
    \author{
    Dan Zhang
    }
    \note{
    nothing
    }
    \seealso{
    nothing
    }
    \examples{
    sayHello("world")
    }
    \keyword{ sayHello }
    

    删除文件:

    
    ~ rm sayHello/Read-and-delete-me
    ~ rm sayHello/man/sayHello-package.Rd
    

    #p#分页标题#e#

    打包sayHello

    
    ~ R CMD build sayHello
    * checking for file ‘sayHello/DESCRIPTION’ ... OK
    * preparing ‘sayHello’:
    * checking DESCRIPTION meta-information ... OK
    * checking for LF line-endings in source and make files
    * checking for empty or unneeded directories
    * building ‘sayHello_1.0.tar.gz’
    
    ~ ls -l
    drwxrwxr-x 4 conan conan 4096  8月  1 15:22 sayHello
    -rw-r--r-- 1 conan conan  663  8月  1 15:24 sayHello_1.0.tar.gz
    -rw-rw-r-- 1 conan conan   59  8月  1 15:04 sayHello.R
    

    当地安装sayHello

    
    ~ R CMD INSTALL sayHello_1.0.tar.gz
    * installing to library ‘/home/conan/R/x86_64-pc-linux-gnu-library/3.0’
    * installing *source* package ‘sayHello’ ...
    ** R
    ** preparing package for lazy loading
    ** help
    *** installing help indices
    ** building package indices
    ** testing if installed package can be loaded
    * DONE (sayHello)
    
    ~ ls /home/conan/R/x86_64-pc-linux-gnu-library/3.0
    bitops  digest  manipulate  rstudio  sayHello  XML
    

    sayHello包,已经在当前账号下举办安装

    利用sayHello函数

    
    ~ R
    
    library(sayHello)
    sayHello("Conan")
    [1] "Hello Conan"
    
    #查察sayHello文档
    ?sayHello
    
    sayHello               package:sayHello                R Documentation
    
    a sayHello function demo
    
    Description:
         a sayHello function demo
    Usage:
         sayHello(name)
    Arguments:
        name: a word
    Details:
         nothing
    Value:
         no return
    Note:
         nothing
    Author(s):
         Dan Zhang
    References:
         nothing
    

    我们包已经乐成建造完成!并在当地举办安装和利用!!

    查抄R包
    假如要提交R包和CRAN,必需要执行check查抄。假如有任何的error和warning都将不被通过。

    退出R的客户端,回到呼吁行

    先安装latex的依赖包(500mb+)

    
    ~ sudo apt-get install texlive
    ~ sudo apt-get install texlive-xetex
    ~ sudo apt-get install texlive-latex-base
    ~ sudo apt-get install texlive-fonts-extra 
    ~ sudo apt-get install texlive-latex-recommended
    ~ sudo apt-get install texlive-fonts-recommended
    

    执行check

    
    ~ R CMD check sayHello_1.0.tar.gz
    
    * using log directory ‘/home/conan/R/demo/sayHello.Rcheck’
    * using R version 3.0.1 (2013-05-16)
    * using platform: x86_64-pc-linux-gnu (64-bit)
    * using session charset: UTF-8
    * checking for file ‘sayHello/DESCRIPTION’ ... OK
    * checking extension type ... Package
    * this is package ‘sayHello’ version ‘1.0’
    * checking package namespace information ... OK
    * checking package dependencies ... OK
    * checking if this is a source package ... OK
    * checking if there is a namespace ... OK
    * checking for executable files ... OK
    * checking for hidden files and directories ... OK
    * checking for portable file names ... OK
    * checking for sufficient/correct file permissions ... OK
    * checking whether package ‘sayHello’ can be installed ... OK
    * checking installed package size ... OK
    * checking package directory ... OK
    * checking DESCRIPTION meta-information ... OK
    * checking top-level files ... OK
    * checking for left-over files ... OK
    * checking index information ... OK
    * checking package subdirectories ... OK
    * checking R files for non-ASCII characters ... OK
    * checking R files for syntax errors ... OK
    * checking whether the package can be loaded ... OK
    * checking whether the package can be loaded with stated dependencies ... OK
    * checking whether the package can be unloaded cleanly ... OK
    * checking whether the namespace can be loaded with stated dependencies ... OK
    * checking whether the namespace can be unloaded cleanly ... OK
    * checking loading without being on the library search path ... OK
    * checking for unstated dependencies in R code ... OK
    * checking S3 generic/method consistency ... OK
    * checking replacement functions ... OK
    * checking foreign function calls ... OK
    * checking R code for possible problems ... OK
    * checking Rd files ... OK
    * checking Rd metadata ... OK
    * checking Rd cross-references ... OK
    * checking for missing documentation entries ... OK
    * checking for code/documentation mismatches ... OK
    * checking Rd \usage sections ... OK
    * checking Rd contents ... OK
    * checking for unstated dependencies in examples ... OK
    * checking examples ... OK
    * checking PDF version of manual ... WARNING
    LaTeX errors when creating PDF version.
    This typically indicates Rd problems.
    * checking PDF version of manual without hyperrefs or index ... OK
    
    WARNING: There was 1 warning.
    See
      ‘/home/conan/R/demo/sayHello.Rcheck/00check.log’
    for details.
    

    发明有一个告诫,checking PDF version of manual … WARNING。是latex生成pdf错误。

    查检告诫的debug日志

    
    ~ R CMD Rd2pdf sayHello_1.0.tar.gz
    Converting Rd files to LaTeX ...
      sayHello_1.0.tar.gz
    Warning in readLines(f) :
      incomplete final line found on 'sayHello_1.0.tar.gz'
    Warning in parse_Rd("sayHello_1.0.tar.gz", encoding = "unknown", fragment = FALSE,  :
      sayHello_1.0.tar.gz:16: unexpected '}'
    Warning: sayHello_1.0.tar.gz:1: All text must be in a section
    Warning: sayHello_1.0.tar.gz:2: All text must be in a section
    Warning: sayHello_1.0.tar.gz:3: All text must be in a section
    Warning: sayHello_1.0.tar.gz:4: All text must be in a section
    Warning: sayHello_1.0.tar.gz:5: All text must be in a section
    Warning: sayHello_1.0.tar.gz:6: All text must be in a section
    Warning: sayHello_1.0.tar.gz:7: All text must be in a section
    Warning: sayHello_1.0.tar.gz:8: All text must be in a section
    Warning: sayHello_1.0.tar.gz:9: All text must be in a section
    Warning: sayHello_1.0.tar.gz:10: All text must be in a section
    Warning: sayHello_1.0.tar.gz:11: All text must be in a section
    Warning: sayHello_1.0.tar.gz:12: All text must be in a section
    Warning: sayHello_1.0.tar.gz:15: All text must be in a section
    Error : sayHello_1.0.tar.gz: Sections \title, and \name must exist and be unique in Rd files
    

    求助:
    Error : sayHello_1.0.tar.gz: Sections \title, and \name must exist and be unique in Rd files
    这个问题我查抄了许多几何次始终没有办理。请求辅佐!!

    上传R包
    当办理了上面的WARN就可以上传了。。。(待续)

    #p#分页标题#e#

    卸载R包

    
    remove.packages("sayHello")
    Removing package from ‘/home/conan/R/x86_64-pc-linux-gnu-library/3.0’
    
    ~ ls /home/conan/R/x86_64-pc-linux-gnu-library/3.0
    bitops  digest  manipulate  rstudio  XML
    

    3. RStudio中建造R包

    RStudio Server的安装及设置,请参考:多人在线协作R开拓RStudio Server

    RStudio已经为我们筹备了一个有界面的情况,利便我们建造R包。

    1. 建设一个工程sayHello
    2. 编辑DESCRIPTION
    3. 建设sayHello.R的剧本
    4. 编辑sayHello.Rd的文档

    1). 建设一个工程sayHello
    project1

    project2

    2). 编辑rstudio/sayHello/DESCRIPTION

    Package: sayHello
    Type: Package
    Title: R package demo for sayHell
    LazyLoad: yes
    Author: Dan Zhang
    Maintainer: Dan Zhang
    Description: This package provides a package demo
    License: GPL
    Version: 1.0
    Date: 2013-07-31
    Depends: R (>= 3.0.1)
    @gmail.com>

    3). 编辑rstudio/sayHello/R/sayHello.R的剧本

    sayHello<-function(name){
      print(paste("Hi",name))
    }
    

    4). 编辑rstudio/sayHello/man/sayHello.Rd的文档

    \name{sayHello}
    \alias{sayHello}
    \title{a sayHello function demo}
    \description{
    a sayHello function demo
    }
    \usage{
    sayHello(name)
    }
    \arguments{
      \item{name}{a word}
    }
    \details{
    nothing
    }
    \value{
    no return
    }
    \references{
    nothing
    }
    \author{
    Dan Zhang
    }
    \note{
    nothing
    }
    \seealso{
    nothing
    }
    \examples{
    sayHello("world")
    }
    \keyword{ sayHello }
    

    5). 执行build和reload
    project3

    project4

    6). 执行check
    project5

    在RStudio中可以更利便的举办R的开包,打包,查抄等的进程。RStudio就是R的神器!

    固然还没有宣布本身的R包,不外很快了!!有此想法已经多时了!!每一天加油!

      关键字:

    在线提交作业