极简 R 包建立方法
之前就是苦于不知道怎样建立 r 包,各种概念不清晰。如果要开发的 R 包中只有 R 函数的话,按照这篇文章走再加上思考能力一定能够搞定。
[未知用户] 咳咳,不要用编辑部的账号回复呀
弱弱问下,准备工作中说:Windows 下,请安装 rtools。但后面的步骤中似乎没有直接调用过rtools啊。请问rtools在此过程中的作用是什么?
[未知用户] ( ̄▽ ̄)" 好。私人账号赛高!
[未知用户] 嗯,怎么说呢。build() 和 check() 函数里面其实有很多动作的。rtools 是在 windows 下安装了一些 linux 下的命令行工具来支持那些操作。
比如说,build() 会打包出一个 *.tar.gz ,这个过程是调用了 rtools 里面 tar.exe 和 gzip.exe(山寨版 linux 的 tar gzip 命令程序)来运行的。
比如说,build() 会打包出一个 *.tar.gz ,这个过程是调用了 rtools 里面 tar.exe 和 gzip.exe(山寨版 linux 的 tar gzip 命令程序)来运行的。
按照这个方法终于做出来了!谢谢大神了!
需要注意的地方:
(1)Author: Laowu Wang <wanglaowu@mail.example.com>中Author需要用单数。
(2)下面这一部分每行都要用#‘,否则后面会报错。
#' Generate a time series of fractional Brownian motion.
#'
#' This function generatea a time series of one dimension fractional Brownian
motion.(这样就不可以哦!)
(3)还有一个最关键的:建立的工作目录要用英语,不要夹杂汉语!否则check通不过。
需要注意的地方:
(1)Author: Laowu Wang <wanglaowu@mail.example.com>中Author需要用单数。
(2)下面这一部分每行都要用#‘,否则后面会报错。
#' Generate a time series of fractional Brownian motion.
#'
#' This function generatea a time series of one dimension fractional Brownian
motion.(这样就不可以哦!)
(3)还有一个最关键的:建立的工作目录要用英语,不要夹杂汉语!否则check通不过。
我了个去,刚准备来cos搜点打包的论坛文章,居然首页就是这篇,太有缘分了,握爪
checking Rd line widths ... NOTE
......
These lines will be truncated in the PDF manual.
对于Rd文件中某一个usage的表达式太长该怎么办?我试过回车分割,没有用。
......
These lines will be truncated in the PDF manual.
对于Rd文件中某一个usage的表达式太长该怎么办?我试过回车分割,没有用。
这个包建立以后,下次用的时候怎么加载呀?如何利用其中的函数,以及查看帮助呀?
[未知用户] 当成普通包那样。建立包,install.packages('s-0.1.tar.gz', type='source') 安装到本地不就行了么。
升级R。
[未知用户] 首先,谢谢你能回答!linstall.packages('s-0.1.tar.gz', type='source') 这个之后,要用library()函数吗?要是用library()函数,函数中的参数应该改写什么呀?就是这个包的名字叫什么啊?这个包中我们写的文档和注释,我们怎么才能看到啊?也用?之类的吗?
[未知用户] 很抱歉,看完你的文章第一次在电脑上怎么运行都不能成功。又尝试了一下,终于成功了 。具体的步骤如下:
(1)install.packages('~/somebm_0.1.tar.gz', type='source') #发现第一次需要,第二次可以跳过这一步。
(2)library(somebm)
(3)fbm(hurst=0.3, n=1000)
新的问题就是,当不知到函数名时,如何查找加载的“somebm”包中的函数进行步骤(3)。就是当运行步骤(3)时,如何查看关于函数fbm的帮助,以便以后运行。试了一下,函数?fbm不能奏效。
(1)install.packages('~/somebm_0.1.tar.gz', type='source') #发现第一次需要,第二次可以跳过这一步。
(2)library(somebm)
(3)fbm(hurst=0.3, n=1000)
新的问题就是,当不知到函数名时,如何查找加载的“somebm”包中的函数进行步骤(3)。就是当运行步骤(3)时,如何查看关于函数fbm的帮助,以便以后运行。试了一下,函数?fbm不能奏效。
[未知用户] 安装完之后就是普通包那样用啊了。。。当然要 library() 来引入当前的环境之中。
查找包中所有函数帮助
help(package='somebm')
查找已知函数名称的帮助
library('somebm') #注意要先运行这句
?fbm #我这里运行成功,注意英文问号
help('fbm', package='somebm') #如果上面的不行试试这个
查找包中所有函数帮助
help(package='somebm')
查找已知函数名称的帮助
library('somebm') #注意要先运行这句
?fbm #我这里运行成功,注意英文问号
help('fbm', package='somebm') #如果上面的不行试试这个
[未知用户] 看了你的帮助,怀着无必兴奋的心情,有尝试了一下,还是不行,R里面出现这样的提示:
> library('somebm') #注意要先运行这句 #没问题
> ?fbm #我这里运行成功,注意英文问号 # 出现问题
No documentation for ‘fbm’ in specified packages and libraries:
you could try ‘??fbm’
> help('fbm', package='somebm') #如果上面的不行试试这个#问题
No documentation for ‘fbm’ in specified packages and libraries:
you could try ‘??fbm’
希望不吝赐教!!!
> library('somebm') #注意要先运行这句 #没问题
> ?fbm #我这里运行成功,注意英文问号 # 出现问题
No documentation for ‘fbm’ in specified packages and libraries:
you could try ‘??fbm’
> help('fbm', package='somebm') #如果上面的不行试试这个#问题
No documentation for ‘fbm’ in specified packages and libraries:
you could try ‘??fbm’
希望不吝赐教!!!
[未知用户] 我也是初学者,大家共同探讨。。
我这里重新试过了,也出现了你说的离奇现象 = =///
你有没有设置过 R_LIBS_USER 之类的?目测问题出于这里。你有设置的话删除这个试一下。
然后不使用 rstudio。用最原始的 R.exe:
你安装 R 的时候,应该已经把 R.exe 放到 path 中了(自己搜索方法)。那么,打开命令提示符,输入 R 再输入 install.packages('~/somebm_0.1.tar.gz', type='source') (路径要正确)再输入 help('fbm', package='somebm') 应该是没有问题的。。。吧 。。。。
建议去论坛问吧!这个应该涉及到 windows 的某些设置问题。
我这里重新试过了,也出现了你说的离奇现象 = =///
你有没有设置过 R_LIBS_USER 之类的?目测问题出于这里。你有设置的话删除这个试一下。
然后不使用 rstudio。用最原始的 R.exe:
你安装 R 的时候,应该已经把 R.exe 放到 path 中了(自己搜索方法)。那么,打开命令提示符,输入 R 再输入 install.packages('~/somebm_0.1.tar.gz', type='source') (路径要正确)再输入 help('fbm', package='somebm') 应该是没有问题的。。。吧 。。。。
建议去论坛问吧!这个应该涉及到 windows 的某些设置问题。
[未知用户] 哦,十分谢谢! 说实话,这次的回答感觉已经超出了我的理解,不过,还是充满了好奇。希望自己能怀着好奇心能学得更多,再次谢谢。
3 个月 后
請問這樣的流程生成R包,裡面會有包含DOC的資料夾嗎?就是這個DOC的資料夾會有R document.
1 个月 后
系统的LaTeX里没有装inconsolata这个宏包。
1 年 后
写得很棒,照着做了一遍,除了开始出了点问题之外就很顺利的成功了! 就是不明白rtools到底用到了吗? 还有DESCRIPTION里面的AUTHOR信息得按照里面的格式写才行,要不最后build的时候通不过。总之,很感谢
楼主这个用到latex了吗? 是我没看见吗? 我也是照着做的,没有用到什么latex啊
15 天 后
[未知用户] Error:
LaTeX errors when creating PDF version.
This typically indicates Rd problems.
LaTeX errors found:
!pdfTeX error: pdflatex.EXE (file t1-zi4r-0): Font t1-zi4r-0 at 540 not found
==> Fatal error occurred, no output PDF file produced!
Solution!
initexmf --update-fndb
initexmf --edit-config-file updmap
The latter command should open updmap.cfg in your default editor, commonly Notepad.
Add the line
Map zi4.map
to updmap.cfg, save and close. Then, in the command window, type
initexmf --mkmaps
LaTeX errors when creating PDF version.
This typically indicates Rd problems.
LaTeX errors found:
!pdfTeX error: pdflatex.EXE (file t1-zi4r-0): Font t1-zi4r-0 at 540 not found
==> Fatal error occurred, no output PDF file produced!
Solution!
initexmf --update-fndb
initexmf --edit-config-file updmap
The latter command should open updmap.cfg in your default editor, commonly Notepad.
Add the line
Map zi4.map
to updmap.cfg, save and close. Then, in the command window, type
initexmf --mkmaps
6 个月 后
谢谢楼主分享,自己把@export给省略了,后来一直出错,export只是让读者可见,这个为什么不可以省略?麻烦楼主解答下,非常感谢。
6 个月 后
请问在创建R package时如何,如何实现自动安装依赖的包。试了Depends和Imports,安装了自建的包后,library(),可以将依赖的包加载进来。但是别人没按依赖的包时,安装我创建的包,怎样实现自动安装依赖的包?
9 个月 后
首先,谢谢楼主了,我按照这个方法做了一个自己的R包,但是安装之后,我试了我的包里面的函数,显示没有那个函数,在测试的时候明明好使的,请问楼主,能帮忙解答下这是为什么吗?
1 年 后
DanielDuan 你没有在注释里面加入export
熟悉latex的话可以用package.skeleton()直接开怼;我写多元高斯的时候就这么干的,很多小细节容易出小问题特别闹心。
原生工具的话用devtools其实挺方便,流程基本按照这个来就可以:https://github.com/rstudio/cheatsheets/raw/master/package-development.pdf