使用脚本文件中的代码创建R包

问题描述 投票:0回答:1

我已经编写了一些R函数,并使用RStudio将它们拖放到脚本文件中。这些是我反复使用的代码片段,所以我想知道如何才能最轻松地用它们创建R包(供我自己私人使用)。

我已经在线阅读了各种“如何”指南,但它们非常复杂。有人可以建议这样做的“白痴指南”吗?

r r-package
1个回答
0
投票

到目前为止,我已经创建了很多R软件包,因此我可以为您提供帮助。在继续执行后续步骤之前,需要满足一些先决条件,其中包括:

  • RStudio
  • devtools软件包(用于分别用于在R中创建软件包和脚本的create_packageuse_r之类的函数)
  • roxygen2软件包(用于roxygen文档)

如果没有上述软件包,则可以分别使用以下命令安装它们:

install.packages("devtools")

install.packages("roxygen2")

步骤:

((1)使用library(devtools)在RStudio中导入devtools。

((devtools是一个核心软件包,使用其工具可以更轻松地创建R软件包)

((2)使用以下方法创建软件包:

create_package("~/directory/package_name")用于自定义目录。

[create_package("package_name"),如果要在当前工作空间目录中创建包。

((3)执行此功能后不久,它将打开一个新的RStudio会话。您会发现在旧的会话中会自动生成一些行,这基本上告诉R在指定目录中创建具有必需组件的新包。

之后,我们就完成了RStudio的这个旧实例。我们将在新的RStudio会话窗口上继续工作。

到目前为止,包创建部分已经结束了(是的,很简单),但是,包不能仅通过其创建就可以直接运行,而事实上,您需要在其中包含一个函数,这需要包的一些其他方面,例如作为其文档(使用@param@return等提及函数的标题,参数,返回类型,示例等-如果您在某些github仓库中看到了roxygen文档,就会很熟悉),然后单击R CMD检查以获取工作正常。

我将在后续步骤中进行介绍,但是如果您要验证是否已创建包,可以查看:

  • 新RStudio会话的右上角,您可以在其中看到您创建的包名称。

  • 控制台,您将在其中看到R在我们在create_package()函数中指定的路径中创建了一个新的目录/文件夹。

  • RStudio会话的文件窗格,您会在目录中注意到一堆新文件和目录。

((4)正如您所说的那样,将函数拖放到脚本文件中-因此,您需要首先创建脚本,这可以使用以下方法完成:

use_r("function_name")

一个新的R脚本将在您的工作会话中弹出,随时可以使用。现在继续在其中编写您的函数。

((5)完成后,您需要加载为程序包编写的函数。这是通过使用devtools::load_all()功能来完成的。

当您在控制台中执行load_all()时,您将看到控制台中显示的Loading package_name,您将知道这些功能已加载到您的程序包中。之后,您可以尝试在控制台中调用函数,以验证它们是否是程序包的一部分。

((6)现在,您的函数已被写入并加载到程序包中,现在该进行检查了。在更改程序包时,最好检查整个程序包。函数devtools::check()提供了一种简便的方法。

尝试在控制台中执行check(),它将通过许多过程来检查软件包中的警告/错误,并提供与屏幕上的消息相同的详细信息(与错误/警告/注释有关)。最后的“ R CMD检查”结果将包含重要的日志,供您查看出现的错误和警告及其频率。

如果您的程序包中的功能编写得很好,(并考虑了其他程序包的依赖性)它将在执行check时给您两个警告:

第一个警告将与您的软件包使用的许可证有关,而新许可证未指定该许可证。

第二个应该是用于记录的内容,警告我们我们的代码没有记录。

要解决第一个问题,即许可证,请使用use_mit_license("license_holder_name")命令(或其他适合您的软件包的许可证-但是如您所提到的供私人使用,只要您自己去,指定的内容并不重要(使用或不分发)使用您的名字代替“ license_holder_name”或任何适合许可证名称的名称。这将在.DESCRIPTION文件(在文件面板中)中添加许可证字段,并创建添加许可证信息的其他文件。

[此外,您还需要编辑.DESCRIPTION文件,该文件具有不言自明的字段以供填写或编辑。这是一个如何获得它的示例:

Package: Your_package_name
Title: Give a brief title
Version: 1.0.0.0
Authors@R: 
    person(given = "Your_first_name",
           family = "Your_surname/family_name",
           role = c("package_creator", "author"),
           email = "[email protected]",
           comment = c(ORCID = "YOUR-ORCID-ID"))
Description: Give a brief description considering your package functionality.
License: will be updated with whatever license you provide, the above step will take care of this line.
Encoding: UTF-8
LazyData: true

要解决文档警告,您需要使用roxygen文档来记录功能。一个例子:

#' @param a parameter one
#' @param b parameter two
#' @return sum of a and b
#' @export
#'
#' @examples 
#' yourfunction(1,2)
yourfunction <- function(a,b)
{
  sum <- a+b
  return(sum)
}

[遵循roxygen语法并根据需要添加属性,如果从基本R以外的其他包中导入,则某些是可选的,例如@title用于指定标题,而其他@import等则是必需的。] >

使用Roxygen骨架完成对函数的文档记录后,我们可以通过运行devtools::document()来告诉我们的软件包我们已经记录了函数。执行document()命令后,再次执行check()以查看是否收到任何警告。如果您不这样做,那意味着您很好。 (如果您按照以下步骤操作,则不会)

最后,您需要安装软件包,以使R可以访问它。只需使用install()命令(是与开始时使用的命令相同,只是不需要在此处指定软件包之类的内容,例如install("package"),因为您当前正在加载程序包并且可以部署/安装的实例中工作,并且在安装几行后,您会看到一条语句,例如“ Done(package_name)”,它表示我们的软件包的安装已完成。

现在,您可以尝试使用功能,方法是先使用library("package_name")导入软件包,然后从软件包中调用所需的函数。就是这样,恭喜您做到了!

我试图以一种清晰的方式(我创建我的R包的方式)包括该过程,但是如果您有任何疑问,请随时询问。

© www.soinside.com 2019 - 2024. All rights reserved.