注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

wangyufeng的博客

祝愿BB 健康开心快乐每一天

 
 
 

日志

 
 

R package制作教程(入门)  

2010-11-05 15:41:30|  分类: R、SVG&GNUPlot画 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
R package的最简单制作

R的强大之处在于它包罗万有的包,几乎任何领域都可以从CRAN里找到你所需要的实现。


如果有一些功能你希望自己来实现,又或者是用别人的包用多了,希望自己做一个,那么这是一个简单的向导。可以告诉你怎么去制作一个最简单的R包,如果你需 要用到复杂的功能,可以再深入地查看资料,我以后也会根据自己的实践深入写一写。


其实最原始最详尽的R包制作指南应该是官方文档<Writing R extensions>,但看过的人无一不觉得这是个累赘,它面面俱到地说了所有的事情,但令初学制作者无所适从。那么,摒弃里面的大部分内容,你真正需 要的东西是这样的(以下说明基于linux平台,windows用户也可参考):


    * 准备工作

   1. 指定两个目录,一个是工作目录mydir(/home/wentrue/work),一个是包目录mylib(如/home/wentrue /Rlibs)。前者是你写R代码、运行R console的地方,后者是安装包的地方。
   2. 默认情况下在mydir是找不到mylib下的包的,因为mylib不在包的搜索路径里,解决这个问题只需要在mydir新建一个文件.Rprofile 文件,里面写上:.libPaths(”/home/wentrue/Rlibs”)即可。这样在mydir运行R脚本或启动R终端,mylib就会被添 加到包搜索路径中。

    * 添加目录与文件

   1. 在mydir新建一个目录,名为once,作为包名。然后生成一些目录,目录树结构见下:

          $ tree once
          once
          |– DESCRIPTION
          |– R
          |   |– test.R
          |   `– zzz.R
          |– data
          |– man
          `– src

   2. 目录说明:必需的是DESCRIPTION文件、man目录和R目录,剩下的都是可选的。DESCRIPTION文件描述包的meta信息,后面会有一个 附例;R目录下面存放R脚本文件,里面的函数可导出作为包函数库提供给外部使用;如果要在包里放一些试验数据,可以放在 data目录里,常用是以csv格式存放,在R终端里data(***)可以载入,这里留空;man目录是R的帮助文档,即?xxx时显示的那些,有一定 的格式要求,这里也留空;src存放c/c++/fortran源代码,必须同时放置Makefile或Makevars文件指导编译程序工作,这里留 空。
   3. 作为试验,我在test.R里写了一个简单的函数,内容见下,里面的oncetest函数在once被装载时就可以被R直接调用。

          oncetest <- function(x, y)
          {
          return(x*y)
          }

   4. zzz.R可以在载入包时做一些事情,这里留空。
   5. 一个简单的包就这样做好了,是不是很简单。如果有其它需要,只要往R目录或src目录添加文件就可以了。

    * 安装与试验(以下步骤都在mydir目录进行)

   1. 运行R CMD check once,R会检查包看是否能正确安装(并未实际安装),如果不成功会返回ERROR,并有出错信息。这个实验里会有一些warning,是因为一些目录 留空的缘故,不用管它。
   2. 运行R CMD build once,会生成一个once_0.1.tar.gz安装包,其中的数字是我在DESCRIPTION里写的版本号。
   3. 运行R CMD INSTALL -l /home/wentrue/Rlibs once_0.1.tar.gz,就可以把包安装到mylib里。
   4. 运行R,进入R终端;library(once),载入刚制作的包;search(),可以看到once已经被载入。
   5. 在R终端运行oncetest(2,3),返回6,试验成功。

附:我的DESCRIPTION文件内容


Package: once

Version: 0.1
Date: 2009-07-31
Title: Once Test
Author: Guozhu Wen <xxx@gmail.com>
Maintainer: Guozhu Wen <xxx@gmail.com>
Depends: R (>= 1.9.0)
Description: A Once Test Description
License: GPL version 2 or later

参考:
http://www.maths.bris.ac.uk/~maman/computerstuff/Rhelp/Rpackages.html

补充:最典型的一个应用是,你已经积累下来一批自己写的常用的R函数,但又不想每次都一个个文件source进来,那么,把它们分类做成package 吧,就可以像平常用其它package一样使用这些函数了,发布给别人用也方便得多。


转载请保留本文原始链接:
http://www.wentrue.net/blog/?p=395
  评论这张
 
阅读(2402)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017