在Windows中创建R的包的步骤

本文将向你介绍在Windows下创建包的步骤。在Unix下的创建过程以及如何用R调用C语言代码,请参考Google Group中的如何写R的程序包一文。

在Windows下创建R的包(package)比较容易,但也需要十分小心。下面给出了创建一个R的包的步骤。如果需要了解创建包的更多细节,请参考相关的参考文献.

安装必要的软件:

安装全部编译器

设置环境变量

右键单击“我的电脑”,依次选择“属性”-“高级”-“环境变量”,编辑变量“Path”,在里面加入上面六个软件的目录。如下:

C:\RTools\bin; C:\MinGW\bin; C:\Program Files\MiKTeX 2.5\miktex\bin; C:\Perl\bin\; C:\Program Files\R\R.2.8.0\bin; C:\Program Files\HTML Help Workshop; C:\WINDOWS\system32; C:\WINDOWS; C:\WINDOWS\System32\Wbem;

确认你将上述六个软件的目录正确地加入了环境变量Path。你可以在命令提示符窗口输入下列命令进行测试:

gcc –help
perl –help
TeX –help
R CMD –help

看是否能执行上述命令。

在完成了上面的工作后,你的Windows版本的R与Unix版本的R差别已经不大。

编译包

如何编写包,请参阅《Writing R Extensions》 I will not state the details about how to write a package, please see Writing R Extensions instead.

编译帮助文件

进入包所在目录,执行下列命令:

cd man
R CMD Rd2txt xxxx.Rd
R CMD Rdconv -t=html -o=xxxx.html xxxx.Rd

对每一个Rd文件都要编译。编译好后,进入包的上层目录,检验包是否正确:

cd ..\..
R CMD check test

为你的包创建一个PDF格式的手册:

R CMD Rd2dvi --pdf test

最后创建包:

R CMD build --binary --use-zip test

最后生成zip文件就R的安装包。

参考文献:

  1. Writing R Extensions
  2. Making R Packages Under Windows
  3. Build R package for Win2000/XP
  4. Building R for Windows
  5. Creating R Packages (the idiot’s guide)

在Windows中创建R的包的步骤》有20个想法

  1. 作者该更新文章啦,至少从R 2.10.0开始,Microsoft html compiler就是不需要的工具了。现在R官方不支持chm格式的帮助文档了。有些用户对此很不满,但据说微软官方都不再支持了……而且chm暗含的安全问题太多。

    另,貌似R CMD build没有--use-zip这个选项,只有--use-zip-data。在Windows下,只要加了--binary选项,就会生成一个zip包。

    1. 昨晚The R Journal出来了,才知道不支持chm的原因是安全问题,但chm的确是个非常方便的东西,不知有没有和chm效果差不多的帮助文档格式?

      1. 你若那么看重chm的话,不妨研究一下那Microsoft html compiler是怎么工作的,R的文档全都是开源的,而且R CMD Rdconv提供了把R帮助文档转化为HTML的途径,有了HTML文件之后编译chm应该不是困难的事情。

        或者看看R 2.9.0之前的编译过程是什么样的。

      2. 我倒不是看重chm,而是看重它的效果——可以很方便地翻阅一个包内所有的函数,而目前网页版的没有这么舒服、便捷。 我想R老鸟们一定有比较nice的解决方案,不知是?

      3. 可以看PDF啊,R CMD Rd2pdf,PDF手册也包含所有函数,也有目录

        我个人打一开始就没用过chm帮助,而是看最简陋的文本版帮助,所以去掉chm对我没有任何影响……

  2. 最近学习R,确实感到很难。有一些问题怎么也弄不明白,问题数量还不少,要在论坛里面一一咨询可能会很困难。所以我倡导坛主还是建一个关于R的QQ群吧。让我们这些初学者的问题得到及时的解决,我想这也会为R在中国的进一步扩展起到一定的推动作用。呵呵,如果大家觉得提议不好,欢迎批评。

    1. QQ群真的那么重要么?在我还大规模用QQ的那个时候,每次漫无目的一开QQ,先蹦出个新闻窗口,好吧,看看有些啥新闻娱乐八卦,然后一串跳动的窗口,看看张三干了啥李四在干啥,回了几条消息,发现有人在线,只好继续聊下去,和个人聊着呢,又看见群开始闪了,扎进群又是有一句没一句的,一会儿又看见某人QQ空间更新了,星星在闪,八卦的我们又去点星星,一会儿又是生日提醒,得送个小礼物了,于是链接到了网页,QQ校内的短消息还没看,新好友还没加,QQ广告邮件还未读,很多人更新了状态……本是无心开一下QQ,发现本来今天早起是为了学习的,结果一圈逛下来,该吃午饭了。有多少人能控制自己开一次QQ仅仅问几个R问题就下线?

      另外,我也说过几遍了,QQ是个人对个人的,这样也许对你来说方便了,专人给你回答问题,但那个回答问题的人呢?下次别人有了问题,他/她又得回答一遍。帖子的好处在于分享。QQ群也可以分享,这一点太云说过,但我的经验是,不到万不得已,不要分散兵力,大家有一个集中的地方问答的话,就尽量不要分散到别的地方去。这么考虑并没有特意为网站攒人气的意思。

      如果你个人有很多问题,不妨在论坛开个帖子,个人专贴,把你所有的问题一个个提出来。肯定会有人解答的。有时候问题答案来得太快太容易对你学习并不一定有利,自己要猛看苦看帮助文件。

      1. 说得很好,以前确实太依赖QQ了,看来得改改

  3. 谢谢您的文章,对我初学的人来说很有用。
    有个问题:为什么我可以运行rcmd build 和rcmd check 但不能运行rcmd install我建的freq包?

    c:\pa>rcmd build freq
    * checking for file ‘freq/DESCRIPTION’ … OK
    * preparing ‘freq’:
    * checking DESCRIPTION meta-information … OK
    * checking for LF line-endings in source and make files
    * checking for empty or unneeded directories
    * building ‘freq_1.0.tar.gz’
    cygwin warning:
    MS-DOS style path detected: c:/pa/freq_1.0.tar.gz
    Preferred POSIX equivalent is: /cygdrive/c/pa/freq_1.0.tar.gz
    CYGWIN environment variable option “nodosfilewarning” turns off this warning.
    Consult the user’s guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames

    c:\pa>rcmd build –binary freq
    –binary is deprecated
    * checking for file ‘freq/DESCRIPTION’ … OK
    * preparing ‘freq’:
    * checking DESCRIPTION meta-information … OK
    * checking for LF line-endings in source and make files
    * checking for empty or unneeded directories
    * building binary distribution
    * installing *source* package ‘freq’ …
    ** R
    ** preparing package for lazy loading
    This is vegan 1.17-12
    ** help
    *** installing help indices
    ** building package indices …
    ** testing if installed package can be loaded
    * MD5 sums
    packaged installation of ‘freq’ as freq_1.0.zip

    * DONE (freq)

    c:\pa>rcmd install freq
    ‘install’ is not recognized as an internal or external command,
    operable program or batch file.

    这是什么原因? 谢谢指教!

      1. 谢谢你们的热心解答!现在还是不能运行,错误信息贴在论坛那边了。

        rcmd 在windows下还可以用。

  4. 请问一下,我前两天上传了一个程序包到CRAN,现在一直在ftp的/incoming下,后缀为noemail, 这是怎么回事,难道我有些操作不规范,直接忽视我?

    1. 需要给[email protected]发封邮件说明你上传新包了,见CRAN主页的说明。

  5. 不是这个原因,我发过邮件了,CRAN policy 里面说上传的包有 pending, save, noemail 等几种状体,noemail 貌似不是没法邮件的意思,和我同一天上传的包有几个也是一直noemail的状态。

  6. 谢谢邱怡轩同学,貌似你说的还是对的,我先用新浪邮箱发了一封,结果人家貌似没收到(不知啥原因)。特别感谢谢益辉老师的帮助,特意帮我发邮件咨询CRAN的 Ripley,非常热心,现在问题已经解决了,谢谢大家的帮助,同时提醒大家以后上传程序包的时候用正规一点的邮箱(诸如新浪,雅虎,网易可能会出问题)。

发表评论

电子邮件地址不会被公开。 必填项已用*标注