【冰糖R语言】创建R包(打包R程序)

news2024/11/27 14:43:27

目标:将现有R程序打包

可能涉及知识点:devtools包、usethis包、Rstudio软件

一、R包的类型

通常一个R包中包含以下元素:

1)R文件夹:函数代码

2)man文件夹:存放每个函数的注释文件

3)DESCRIPTION文件:描述文件,描述该包的相关信息,包括名称、开发者等

4)NAMESPACE文件:命名空间文件,描述该包与其他包的依赖关系,比如用到了其他包的函数

5)LICENSE文件:许可证文件

通常,使用的R包通常分为Source Package和Binary Package两种:

Source Package:源代码包,可跨平台使用,安装时有编译步骤

Binary Package:二进制代码包,不同平台不通用,安装时无编译步骤

两者解压后的文件不同,比如R文件夹下的内容,Source Package的R文件夹包含源码R文件,Binary Package的R文件夹下是解析后的文件。两者安装后,函数功能不会有差异。

二、devtools包

devtools包是一款用于R包开发的工具。其功能包括创建、更新、安装、检查等。

详见官网:Tools to Make Developing R Packages Easier • devtools

常用函数:

devtools::load_all():模拟安装和加载R文件夹中的所有函数,默认路径为当前文件夹

devtools::document():更新man文件夹的注释,以及‘NAMESPACE’文件

devtools::check():在本地检查和构建包,输出可能存在问题

devtools::install_github():从github安装包

三、usethis包

usethis包是一个工作流包,用于自动化处理项目设置和开发过程中出现的重复任务(R包或者非R包项目),在创建R包时常与devtools一起使用。

详见官网:Automate Package and Project Setup • usethis

常用函数:

usethis::create_package():创建一个R包,生成R文件夹、DESCRIPTION文件等内容

usethis::use_mit_license():使用MIT的许可证,会更新DESCRIPTION文件中的许可证信息

四、Rstudio软件生成包

Rstudio可通过一系列操作完成devtools和usethis的工作,比如构建包时便调用了devtools::build()

步骤:

1、新建Rstudio项目-“R Package”,填写包名称、工程文件夹路径,此步骤会在指定目录下生成R包的相关要素,包括R文件夹、man文件夹、DESCRIPTION文件等,以及工程文件.Rproj等。

2、在DESCRIPTION文件中添加该包的相关信息,包括包名称、开发者等。

其中许可证License可使用usethis添加,比如usethis::use_mit_license()。依赖项Imports可使用usethis::use_package()添加,此处引用了e1071和pROC两个包。

3、在R文件夹中添加R脚本文件,其中放入定义的函数,这些函数可放在一个或者多个R文件中。默认生成该文件夹时会自带一个示例R文件,删去即可。

4、在每个定义的函数内插入注释,补充函数说明信息。具体地,将光标放在某个函数内,在Rstudio工具栏中“Code”-“Insert Roxygen Skeleton”,会在该函数前生成注释字段,需要手动输入方法名称、参数含义等内容。

下图给出一个定义的读取数据文件的函数的说明:

Title 处填写函数名称,之后可填写函数相关描述。

@param 字段后自动给出参数变量名,可在其后添加参数说明,此处一个参数fileName

@return 字段后添加函数返回内容说明

@export 字段使得该函数可被外部调用

@importFrom 字段后标明此函数中引用关系,比如此处使用了utils包中的read.csv函数

@example 字段后可添加一个该函数的使用示例,需定义有意义的变量,而不是文本说明

此段说明内容对应于使用help查看该函数的说明文档时获得的内容。

5、执行devtools::document()更新函数文档,会在man文件夹下为每个函数生成Rd文件,即为上一步为每个函数添加的函数说明。同时会更新NAMESPACE文件,函数注释中@export 字段和@importFrom 字段的内容都会出现在NAMESPACE文件中。

6、执行devtools::check()对包进行检查。会显示详细的errors、warnings、notes信息,可根据这些信息进行修改。

7、点击Rstudio工具栏“Build”-“Build Source Package”或“Build Binary Package”构建不同类型的R包,即在本地生成对应压缩包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

千万别把工作 当成天大的事

作者| Mr.K 编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 工作不是我们的“主业”,人生才是。K哥一位前同事的遭遇,让我对这句话有了更深的感受。这位前同事,是某大厂高管,由于长期作息不规律和巨大工作压力&…

C++:线上课程2_12(多态和虚函数)

文章目录 一、多态1.多态定义2.多态分类2.1编译时的多态2.2运行时的多态 二、虚函数1.定义2.成员函数与虚函数3.为什么构造函数(移动构造函数,拷贝构造函数)不可以定义为虚函数?4.示例5.对象和指针和引用调用6.虚表分配7.this指针…

【Redis7】--6.集群

文章目录 集群1.基本介绍2.redis集群槽位3.redis集群分片4.redis槽位映射5.redis集群环境搭建5.1三主三从redis集群配置5.2启动六台redis实例5.3构建主从关系 6.redis集群读写7.redis集群主从切换8.redis集群扩容9.redis集群缩容10.集群常用操作命令和CRC16算法分析 集群 1.基…

聊聊复杂网络环境下hdfs的BlockMissingException异常|参数dfs.client.use.datanode.hostname

聊聊复杂网络环境下hdfs的BlockMissingException异常|参数dfs.client.use.datanode.hostname 1 从一个复杂网络环境下的 hdfs 报错问题聊起 大家知道,企业真实的网络环境是复杂多变的,这可能有多种原因: 一方面,单台服务器可以…

国产32位单片机 普冉PY32F002B 适用于LED灯驱,控制器等

PY32F002B 系列单片机采用高性能的 32 位 ARM Cortex-M0内核,宽电压工作范围的 MCU。嵌入了24Kbytes Flash 和 3Kbytes SRAM 存储器,最高工作频率 24MHz。有TSSOP20, QFN20, SOP16, SOP14,MSOP10多种不同封装类型多款产品。 芯片集成了I2C、SPI、USART 等…

C#程序中很多ntdll.dll、clr.dll的线程

VS中调试缓慢,如下图 需要“右键工程——调试——取消勾选‘启用本地代码调试’”即可。

划片机是用于半导体芯片和其它电子元件切割的设备

划片机是用于半导体芯片和其它电子元件切割的设备。在电子行业中,划片机广泛应用于半导体器件、LED芯片、功率器件等多个领域。通过划片机,可以将芯片或其它电子元件从其母片或衬底上切割下来,以便进一步的使用和加工。 半导体芯片是现代电子…

瑞芯微RK3568|SDK开发之环境安装及编译操作

1. SDK简介 一个通用 Linux SDK 工程目录包含有buildroot、app、kernel、device、docs、external 等目录。其中一些特性芯片如RK3308/RV1108/RV1109/RV1126等,会有所不同。 ● app:存放上层应用 app,主要是 qcamera/qfm/qplayer/settings 等…

Docker 安装MYSQL 5.7.38

首先创建临时容器 docker run -d -p 3318:3306 --name mysql -e MYSQL_ROOT_PASSWORD123456 mysql:5.7.38创建mysql文件挂载目录,然后从临时容器中拷贝出配置文件 mkdir -p /data/docker/mysql/log mkdir -p /data/docker/mysql/data mkdir -p /data/docker/mysql…

人力资源行业HR从业现状,这份报告了解下

人力资源(Human Resource ,简称HR)指在一个国家或地区中,处于劳动年龄、未到劳动年龄和超过劳动年龄但具有劳动能力的人口之和。或者表述为:一个国家或地区的总人口中减去丧失劳动能力的人口之后的人口。人力资源也指一定时期内组织中的人所拥…

2023年信创云管平台选哪家?咨询电话多少?

随着云计算和信创国产化的快速发展,越来越多企业需要支持信创系统的云管平台。但很多企业不知道市面上信创云管平台有哪些,也不知道选哪家?这里我们小编就给大家来回答一下。 2023年信创云管平台选哪家?咨询电话多少?…

Python第二次作业(4)【矩形面积与周长】

作业要求:求任意矩形的面积与周长 代码如下: len int(input("请输入矩形的长:")) wid int(input("请输入矩形的宽:")) area len * wid per (len wid) * 2 print("矩形面积:",area) print("矩形周长…

【Linux】socket网络编程

文章目录 1. 网络进程的端口号2. 认识UDP和TCP3. 网络字节序4. socket通信5. UDP服务器和客户端5.1 基础UDP服务器和客户端5.2 群聊服务器和客户端 6. TCP服务器和客户端6.1 TcpServer6.2 TcpClient6.3 TcpServer的优化引入线程池日志系统服务器守护进程化 1. 网络进程的端口号…

Unity Game FrameWork—框架学习—ab打包流程解析

UGF资源更新与管理 https://www.jianshu.com/p/80bff8c9004a 打包配置 ResourceBuilder.xml文件保存了打包配置信息 参数: InternalResourceVersion:内部版本号 Platforms:生成的ab资源所对应平台编号,二进制左移,与…

中睿天下受邀参加2023北京数字交通大会暨博览会并发表主题演讲

2023年9月11号由中国交通报社、中国交通运输协会联合主办的2023北京数字交通大会暨博览会(简称大会暨博览会)在北京中国国际展览中心(新馆)举行。这次大会主题是“数字新时代、交通新未来”,将聚焦数字交通创新发展&am…

国货拟人AI绘图;500+AI岗位合辑;百川x亚马逊AI黑客松;企业级AI行业图谱;100+LLM面试题与答案 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🔥 上万人涌入抖音国货直播间,朴实「商战」带火国民品牌 谁能想到,李佳琦「华西子事件」意外带火了一众国货品牌的…

C#源码 LIS实验室(检验科)信息系统源码 SaaS模式的Client/Server架构

LIS实验室(检验科)信息系统,一体化设计,与其他系统无缝连接,全程化条码管理。集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。 技术细节: 体系结构…

什么是RPA机器人流程自动化软件?

泽众RPA机器人流程自动化软件,是一种能够模拟人类来执行重复性任务的软件;它通过驱动对于系统业务进行统筹安排、协调处理、自动执行以此提升业务处理效率。借助RPA用户可以提高工作效率、节省成本、降低出錯率、节省时间、并从重复性的后台任务中解放劳…

《学术小白学习之路12》进阶-基于Python实现中文文本的DTM主题动态模型构建

《学术小白学习之路》基于Python实现中文文本的DTM主题动态模型构建 一、数据选择二、数据预处理三、输入数据ID映射词典构建四、文档加载成构造语料库五、DTM模型构建与结果分析六、结果进行保存七、保存模型一、数据选择 所选取的数据集是论文摘要,作为实验数据集,共计12条…

中国人民大学与加拿大女王大学金融硕士为何占据在职读研人的心?一起来看看

说起北京地区的中外合作办学在职硕士项目哪个最受欢迎呢?无疑是中国人民大学与加拿大女王大学金融硕士项目,它已经深深占据在职读研人的心。项目历经十年的风雨,有口皆碑。一起去人大女王金融硕士项目为什么这么受青睐。 一、名校光环 女王金…