全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
4587 3
2008-06-19
怎么在window和linux 系统下面创建R包?我这里只有一个普通的R函数(或者叫R函数库)文件(见附件),请问怎么将它创建成R包呢?分别在window和linux 系统下?急用,请赐教!!!

[此贴子已经被作者于2008-6-22 21:08:44编辑过]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2008-7-10 18:52:00

回复:(nageshui)急!怎么创建R包?

http://rbbs.biosino.org/Rbbs/posts/list/6.page

下面的创建R 包的简单教程都是在R 2.5.0 下测试的。

1. Windows 环境下
1.1 预装的软件 (所有软件都可以在 http://www.biosino.org/R/R-doc/Rm/http://www.biosino.org/R/requiredSoftWares 下载)

1.1.1 R 软件(R的官方下载:http://www.r-project.org/index.html ;或者在我创建的一个本地非官方下载:http://www.biosino.org/R/R-doc/Rm/ ;)

1.1.2 Rtools(在Windows环境下编译R包的一些必备软件,感谢开源社区如此为我们考虑周全;http://www.murdoch-sutherland.com/Rtools/;或者我创建的链接:http://www.biosino.org/R/requiredSoftWares/Rtools26.exe )

1.1.3 微软的HTML Help Workshop (微软的官方下载:http://msdn2.microsoft.com/en-us/library/ms669985.aspx;或者我创建的链接:http://www.biosino.org/R/requiredSoftWares/htmlhelp.exe)(这个可能之前系统就安装过了,如果这样可以不用安装)

1.1.4 MikTex(Tex在Windows下面的实现;官方下载:http://www.miktex.org/Default.aspx;或者我创建的链接:http://www.biosino.org/R/requiredSoftWares/basic-miktex-2.7.2904.exe;如果你要写中文document,请安装CTEX标准配置:http://www.ctex.org/HomePage)

1.2 安装完后,配置系统的path

1.2.1 假定 R的安装路径在: D:\Program Files\R\R-2.5.0\bin ;Rtools的安装路径在:c:\Rtools\ ;HTML Help Workshop的安装路径在:C:\Program Files\HTML Help Workshop;MikTex 的安装路径在:C:\Program Files\MiKTeX 2.5\miktex\bin;

1.2.2 在系统的PATH里面加上1.2.1里面提到的路径(必须的,下面用粗体标出),如下

c:\Rtools\bin;c:\Rtools\perl\bin;c:\Rtools\MinGW\bin;C:\Program Files\HTML Help Workshop;C:\Program Files\MiKTeX 2.5\miktex\bin;C:\WINDOWS\system32; C:\WINDOWS;C:\WINDOWS\System32\Wbem;

在下图中,箭头所指的区域就是设置PATH的地方,在path中增加路径时,用分号分开。


1.2.3 确认path设置是否有效。如果不知道,可以问旁边的对计算机比较熟悉的人。键入下面的命令,如果正常说明PATH设置有效,

  1. gcc --help   
  2. perl --help   
  3. TeX --help   
  4. R CMD --help  



1.3 现在开始编写R的包,我们用 package.skeleton() 这个函数。

1.3.1 打开R控制台

键入如下代码,

  1. `hl` <-   
  2.   
  3. function() "Hello World!";   
  4.   
  5. `rLove` <-   
  6.   
  7. function(name) paste("Welcom to R world, ", name, "!", sep = "");   
  8.   
  9. `hl_data` <-   
  10.   
  11. matrix(rnorm(100), nc = 10);   
  12.   
  13. package.skeleton(name="helloWorld", list=c("hl", "rLove", "hl_data"));  

  1. gcc --help   
  2. perl --help   
  3. TeX --help   
  4. R CMD --help  



1.3 现在开始编写R的包,我们用 package.skeleton() 这个函数。

1.3.1 打开R控制台

键入如下代码,

  1. `hl` <-   
  2.   
  3. function() "Hello World!";   
  4.   
  5. `rLove` <-   
  6.   
  7. function(name) paste("Welcom to R world, ", name, "!", sep = "");   
  8.   
  9. `hl_data` <-   
  10.   
  11. matrix(rnorm(100), nc = 10);   
  12.   
  13. package.skeleton(name="helloWorld", list=c("hl", "rLove", "hl_data"));  



1.3.2 查看当前工作路径下面,会出现一个“helloWorld”的目录,其中

R 子目录:包含*.R 文件,就是R代码,我们前面写的hl,rLove函数都是在这里面(:_),hl_data呢?);

data 子目录:呵呵,这个就是放*.rda文件的地方,包括我们的hl_data.rda;

man子目录:放在 *.Rd文件,就是包,函数,数据的帮助文档,tex格式的,不要怕Tex,依葫芦画瓢就行了,每个文件一看名字就知道是描述什么内容了;

DESCRIPTION文件:里面的内容我也不解释了,自己改一下;

Read-and-delete-me文件:这个文件没有什么用,看完后删掉。

1.3.3 打包或编译上面的文件

首先,设置一下TMPDIR

  1. D:\Work>set TMPDIR= D:\Work\tmp  



然后,有两种处理方式,

第一种是包的源码格式(*.tar.gz),Linux下面通常用这种格式安装

  1. D:\Work>R CMD build helloWorld  



* checking for file 'helloWorld/DESCRIPTION' ... OK

* preparing 'helloWorld':

* checking DESCRIPTION meta-information ... OK

* removing junk files

* checking for LF line-endings in source files

* checking for empty or unneeded directories

* building 'helloWorld_1.0.tar.gz'

第二种是包的二进制格式(*.zip),Windows下面是用这种安装

  1. D:\Work>R CMD build --binary helloWorld  



* checking for file 'helloWorld/DESCRIPTION' ... OK

* preparing 'helloWorld':

* checking DESCRIPTION meta-information ... OK

* removing junk files

* checking for LF line-endings in source files

* checking for empty or unneeded directories

* building binary distribution

WARNING

* some HTML links may not be found

installing R.css in D:/Work/tmp/Rinst220096374



Using auto-selected zip options ''



---------- Making package helloWorld ------------

adding build stamp to DESCRIPTION

installing R files

installing data files

installing man source files

installing indices

not zipping data

installing help

>>> Building/Updating help pages for package 'helloWorld'

Formats: text html latex example chm

helloWorld-package text html latex example chm

hl text html latex example chm

hl_data text html latex example chm

rLove text html latex example chm

Microsoft HTML Help Compiler 4.74.8702



Compiling d:\Work\tmp\Rbuild220075595\helloWorld\chm\helloWorld.chm



Compile time: 0 minutes, 2 seconds

5 Topics

11 Local links

0 Internet links

1 Graphic





Created d:\Work\tmp\Rbuild220075595\helloWorld\chm\helloWorld.chm, 17,193 bytes

Compression increased file by 5,171 bytes.

adding MD5 sums



packaged installation of package 'helloWorld' as helloWorld_1.0.zip

* DONE (helloWorld)

1.3.4 :_),你的第一个包helloWorld_1.0.zip大功告成。如何在Windows下面安装?见下图


然后在控制台键入命令

  1. library(helloWorld)   
  2.   
  3. hl();   
  4.   
  5. rLove(“Test”);   
  6.   
  7. data(hl_data);   
  8.   
  9. ?hl  


1.4 我们是不是发现问题了?帮助文档里面都是一些文不对题的言语。是的,在1.3.2步里面提到的文件中,我们必须手动修改man目录下面的Rd文件(文本格式的,可以用任何文本工具打开)和DESCRIPTION文件。修改完后,重复1.3.3里面的编译步骤。

1.5 如果你不想用package.skeleton()这个函数。可以手工配置helloWorld目录,所有的文件都是自己写,写完后再编译。这里唯一比较烦的是写man目录下面的Rd文件,一个简单方法如下,

1) 把R环境的工作路径设在你要写的包的man目录下;

2) 键入如下代码,

  1. `hl` <-   
  2.   
  3. function() "Hello World!";   
  4.   
  5. `rLove` <-   
  6.   
  7. function(name) paste("Welcom to R world, ", name, "!", sep = "");   
  8.   
  9. `hl_data` <-   
  10.   
  11. matrix(rnorm(100), nc = 10);   
  12.   
  13. prompt(rLove) # 生成rLove.Rd   
  14.   
  15. prompt(hl) # 生成hl.Rd   
  16.   
  17. prompt(hl_data) # 生成hl_data.Rd  


2. Linux 环境下
同Windows下面的做法,除了不用痛苦地配置那些软件(省略1.1和1.2),因为预先已经配置完了。从1.3开始就行了。安装包的方式采用命令: R CMD INSTALL helloWorld_1.0.tar.gz

好运。

3. 高手进阶
看《R扩展》(http://www.biosino.org/R/R-doc/Rm/R-exts.html) ^_^



丁国徽

2008-1-8

这篇文章被编辑了 11 次. 最近一次更新是在 29/01/2008 09:51:47

[此贴子已经被yahoocom于2009-4-2 23:51:03编辑过]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-9-26 20:43:34
多谢啊,还不够呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-9-27 09:22:21
2# ylwhen

呵呵大师级的攻略。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群