R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第1张图片

一、在电脑的那个位置创建自己的R包?

编写R包的第一步就是要知到在哪里可以写包,电脑的任何位置,只要能够创建文件夹的地方都可以写R包,但是文件的路径要是英文。简单的方法就是在DEF等盘下直接创建一个文件夹,命名为所要创建包的名字,如:E:ProgramDataMyRPackageFirstp

二、编写R包的架构以及整个流程。

一个R包就是由很多文件构成的集合,这里面既有函数,又有能够帮助读者理解的帮助文档,还有一些数据集,这是最基本的内容。所以说,写一个包就是把这些内容做完。在Firstp文件夹下创建R文件夹、UTF-8编码的文本文件。

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第2张图片

1.打开Rstudio,新建脚本文件,保存至R文件夹下,文件以.R后缀结尾。

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第3张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第4张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第5张图片

e24b56cd36e875edd8928cd6af6fe90b.png

2.在s.R中创建函数:f<-function(x){return(x+1)}

3.添加帮助文档

首先,将光标移动到f之前,按下enter键,将函数下移几行

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第6张图片

然后,在标记符号(井号和单引号)后面写帮助文档,export是必须的。

#' This is some descriptio of this function.
#' @title simple function
#' 
#' @description today,I create my first function,a very usrful function.
#' 
#' @details you can use this function to caculate x+1,then return the value of x+1.
#' 
#' @param x x is a number
#'
#' @return a dataframe
#' @export
#' @examples x=1;f(x)

f<-function(x){return(x+1)}

4.写DESCREPTION,打开此文件,然后编写如下代码:

Package: Firstp
Type: Package
Title: This package is my first package created.
Version: 0.1.0
Date: 2020-03-23
Author: tang
Maintainer: BK
Description: I want to say something about my first package,but my mouth as if being frozen by a bock of ice.
License: GPL-3
encoding: UTF-8
LazyData: true

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第7张图片

5.内置数据集:首先,在Firstp文件夹下建立于R文件夹同级的data文件夹,然后在Rstudio中建立数据集,用save函数将创建的数据集存储在data种,文件的后缀名为:.RData。

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第8张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第9张图片

其次,在Rstudio中新建R脚本,保存在R文件夹中,命名为packagegename-data.R,这样R文件夹下就由两个R文件,打开packagegename-data.R并添加内置数据集并编写数据集的帮助文档。

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第10张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第11张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第12张图片

就内置数据集而言,data文件夹是必须的,但是R文件夹下面的数据集帮助文档的命名有两种方式:一是和帮助文档中的数据集名称相同(都是td),二是用packagegename-data.R,但是个人觉得后者可能更好,因为万一数据名字写错,就尴尬了,后者就相当于万金油的写法。

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第13张图片

6.使用roxygen2包中的roxygenize()函数来完成包的剩余部分,如生成具体的帮助文件等。

library(roxygen2)
roxygenize("E:/ProgramData/MyRPackage/Firstp")

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第14张图片

7.检查和生成包:使用devtools包中的check和build函数。

声明:此时R的工作目录还是在C盘下,而我们的R包不在当前的R工作目录下,因此需要更改R的工作目录,具体代码如下:getwd()查看工作目录,setwd()更改工作目录,工作目录改到Firstp这个文件的上级文件夹,例如:MyRPackage中有Firstp,那么路径就设置为E:/ProgramData/MyRPackage。

getwd()
setwd("E:/ProgramData/MyRPackage")

然后使用devtools包中的check和build函数,先检查:

library(devtools)
check("Firstp")

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第15张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第16张图片

然后生成R包:

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第17张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第18张图片

8.安装包并使用

安装:直接将压缩包解压到R安装路径下的library中即可,如果这样不行就改用从Rstudio中安装的方法。

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第19张图片

bcbfe766d935c35dd07e843d98b111a0.png

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第20张图片

使用:library(Firstp)

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第21张图片

查看帮助文档:

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第22张图片

注意:就写包而言,这是一种比较原始的方法。

三、利用package.skeleton函数生成包的框架,然后进行修改,修改好之后直接用roxygenise()生成包的其他部分。

package.skeleton()的说明,"secondp"这个是包的名字;list = c("f")这个是包中函数的名字,如果一个包中有好几个函数,那么就写成list = c("f","g","t)的形式;path 包的路径,比如要在MyRPackage文件夹下生成一个包secondp包,那么这个路径就写成:path = "E:/ProgramData/MyRPackage"。

f<-function(x){return(x+1)}
package.skeleton("secondp",list = c("f"),path = "E:/ProgramData/MyRPackage")

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第23张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第24张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第25张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第26张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第27张图片
在一开始打开second文件时就可以把这三个文件删掉,上面两图是为了看清楚有哪些文件而已

这些文件要删除掉,不然会报错。

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第28张图片

此时,便又回到了步骤二中开始的情形,那么之后的步骤便没有什么区别了。

四、编写包需要用到的工具包:

library(roxygen2)
library(devtools)

还有一个工具,Rtools,在安装是勾选配置环境变量就可以用了,即使忘记配环境变量也没关系,重新设置以下就好。检测Rtools是否配好可以打开命令提示符,然后直接在后面输入:R CMD Firstp。如果提示“既不是内部命令,也不是外部命令”那就说明环境变量没有配好。

0da569420fa1ccecfcfd84da1c032b75.png

五、使用命令提示符也可以检测和生成包,具体做法是:

1.将命令提示符切换到创建包的工作目录,cd E:ProgramDataMyRPackage 然后 E: 即可。

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第29张图片

2.在后面直接输入输入:R CMD check Firstp即可。

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第30张图片

六、在Rstudio的控制面板直接通过鼠标的方式创建包框架:

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第31张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第32张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第33张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第34张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第35张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第36张图片

R 语言怎么保存工作目录到当前路径_R语言--创建(编写)R包_第37张图片

再把R文件夹的文件删除或者修改,这就类似于之前的步骤了,主要涉及的是R文件夹和DESCRIPTION文件。此外,使用devtool中的document函数也具有roxygenise()同样的作用,通过下面的语句可以实现帮助文档的生成、包的检查、生成。

library(devtools)
document("E:/ProgramData/MyRPackage/Firstp")
check("Firstp")
build("Firstp")

七、相关代码

1.DESCRIPTION文件中的代码:

Package: Firstp
Type: Package
Title: This package is my first package created.
Version: 0.1.0
Date: 2020-03-23
Author: tang
Maintainer: BK
Description: I want to say something about my first package,but my mouth as if being frozen by a bock of ice.
License: GPL-3
encoding: UTF-8
LazyData: true

2.R文件中的函数以及帮助文档代码:

#' This is some descriptio of this function.
#' @title simple function
#' 
#' @description today,I create my first function,a very usrful function.
#' 
#' @details you can use this function to caculate x+1,then return the value of x+1.
#' 
#' @param x x is a number
#'
#' @return a dataframe
#' @export
#' @examples x=1;f(x)

f<-function(x){return(x+1)}

3.R文件中数据集帮助文档的代码:

#' @title somedata to test
#' @docType data
#' @name td
#' @keywords d dataset
#'
#'

4.生成数据集的代码:

d<-data.frame(c(1,2,3),c("a","b","c"))
colnames(d)<-c("id","name")
b<-c(1,2,3)
save(list = c("b","d"),file = "E:/ProgramData/MyRPackage/Firstp/data/td.RData")

你可能感兴趣的:(R,语言怎么保存工作目录到当前路径,R语言,包)