警告
      
      
        本文最后更新于 2020-04-21,文中内容可能已过时。
       
     
  hicloudR
R package for hicloud
  开发指南
假设这个包的名称叫 hicloudR
  目录结构
- 需要建立一个 R目录
- 添加 DESCRIPTION用来说明开发包
- 添加 NAMESPACE提供函数
| 1
2
3
4
5
6
7
8
 | ## 建立一个 R 目录
mkdir R
## 建立一个描述文档
touch DESCRIPTION
## 提供函数
touch NAMESPACE
 | 
 
在 DESCRIPTION 添加
| 1
2
 | Package: hicloudR
Version: 0.1
 | 
 
在 ``NAMESPACE` 添加
| 1
2
 | ## 暴露所有函数
exportPattern("^[[:alpha:]]+")
 | 
 
  使用 Rcpp
- 
在 DESCRIPTION添加
 
| 1
2
3
4
 | Package: hicloudR
Version: 0.1
LinkingTo: Rcpp
Imports: Rcpp
 |  
 
 
- 
在 NAMESPACE添加
 
| 1
2
3
 | exportPattern("^[[:alpha:]]+")
useDynLib(hicloudR)
importFrom(Rcpp, sourceCpp)
 |  
 
 
- 
把 myRcpp.cpp放在src目录下面
 
- 
然后在这个包目录 (与 R、src并行的)运行
 
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
 | tree -L 2
.
├── data
├── DESCRIPTION
├── man
├── NAMESPACE
├── R
│   ├── about.R
│   └── RcppExports.R
├── README.md
├── src
│   ├── myRcpp.cpp
│   └── RcppExports.cpp
└── tests
Rscript -e "Rcpp::compileAttributes()"
 |  
 
 
这样会生成两个文件 
- R/RcppExports.R
- src/RcppExports.cpp
 
  打包
打开终端执行
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
 | ## 需要跳转到上面一层
cd ..
R CMD build hicloudR
* checking for file ‘hicloudR/DESCRIPTION’ ... OK
* preparing ‘hicloudR’:
* checking DESCRIPTION meta-information ... OK
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
* building ‘hicloudR_0.1.tar.gz’
 | 
 
  安装
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
 | R CMD INSTALL hicloudR_0.1.tar.gz
* installing to library ‘/home/william/R/x86_64-pc-linux-gnu-library/3.6’
* installing *source* package ‘hicloudR’ ...
** using staged installation
** R
** byte-compile and prepare package for lazy loading
这是一个 hicloudR 的软件包,目前基于开源协议 MIT 进行创作。
所有版权归属汉云投资。
@williamlfang
** help
No man pages found in package  ‘hicloudR’
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (hicloudR)
 | 
 
devtools 提供了更加优雅的方式,可以直接在 R 运行环境中进行构建
- devtools::build()
- devtools::install()
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 | ❯ setwd('/home/william/Documents/hicloudR')
✔ 95.6 MiB master*
❯ devtools::build()
✔  checking for file ‘/home/william/Documents/hicloudR/DESCRIPTION’ ...
─  preparing ‘hicloudR’:
✔  checking DESCRIPTION meta-information
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
─  building ‘hicloudR_0.1.tar.gz’
[1] "/home/william/Documents/hicloudR_0.1.tar.gz"
❯ devtools::install()
✔  checking for file ‘/home/william/Documents/hicloudR/DESCRIPTION’ ...
─  preparing ‘hicloudR’:
✔  checking DESCRIPTION meta-information
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
─  building ‘hicloudR_0.1.tar.gz’
Running /usr/lib/R/bin/R CMD INSTALL /tmp/RtmpDbpRnz/hicloudR_0.1.tar.gz --install-tests
* installing to library ‘/home/william/R/x86_64-pc-linux-gnu-library/3.6’
* installing *source* package ‘hicloudR’ ...
** using staged installation
** R
** byte-compile and prepare package for lazy loading
这是一个 hicloudR 的软件包,目前基于开源协议 MIT 进行创作。
所有版权归属汉云投资。
@williamlfang
** help
No man pages found in package  ‘hicloudR’
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (hicloudR)
 | 
 
  托管到 github
  添加 repo
| 1
2
3
 | git add ./*
git commit -m 'init'
git push
 | 
 
  安装
然后就可以直接安装了
- devtools::install_github("williamlfang/hicloudR")
|  1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 | ❯ devtools::install_github("williamlfang/hicloudR")
Downloading GitHub repo williamlfang/hicloudR@master
✔  checking for file ‘/tmp/RtmpDbpRnz/remotes41d42dcbca76/williamlfang-hicloudR-20b2dbf/DESCRIPTION’ ...
─  preparing ‘hicloudR’:
✔  checking DESCRIPTION meta-information
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
─  building ‘hicloudR_0.1.tar.gz’
Installing package into '/home/william/R/x86_64-pc-linux-gnu-library/3.6'
(as 'lib' is unspecified)
* installing *source* package ‘hicloudR’ ...
** using staged installation
** R
** byte-compile and prepare package for lazy loading
这是一个 hicloudR 的软件包,目前基于开源协议 MIT 进行创作。
所有版权归属汉云投资。
@williamlfang
** help
No man pages found in package  ‘hicloudR’
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (hicloudR)
 |