gpt4 book ai didi

从单独的脚本引用 R 中用户创建的函数

转载 作者:行者123 更新时间:2023-12-01 08:13:36 25 4
gpt4 key购买 nike

我正在尝试重新使用一些我已经编写但经常需要为各种项目重新执行的代码(即我想将一些面向对象的原则应用于我的 R 代码)。我知道存在用于在 CRAN 上发布新包的框架,但我拥有的代码对其他方没有值(value)。

本质上,我想创建自己的本地包并使用 require() 调用引用它们,或者至少根据需要调用我保存在单独的 .r 文件中的函数。

我在网上四处搜索,发现了一些关于创建包和使用 RTools 编译它们的冗长文章(我在 Windows 操作系统上),但是因为我不是在写 C,所以对于我的简单目的来说这似乎有点过分了。为了提供我所指的示例,我有一个脚本可以从字符串数据中删除不需要的字符,我经常需要将这些字符复制/粘贴到新脚本中;我不想这样做,而更愿意只做一些像 require(myFunction) 这样的事情。

有没有一种简单的方法可以解决这个问题,或者我最好通过获取 RTools 并在本地编译我的自定义函数来获得最佳服务?

最佳答案

创建 R 包实际上非常简单。 link from Alex这就是我开始我的第一个包裹的方式。这是我必须给我的学生的一个稍微简化的版本。 (注意:完全归功于原始博文的作者 Hilary Parker)。

首先安装devtools和roxygen:

install.packages("devtools")
library("devtools")
install.packages("roxygen2")
library("roxygen2")

为您的函数创建一个新目录:

setwd("/path/to/parentdirectory")
create("mypackage")

将您的函数添加到 R 目录中名为 anything.R 的一个(或多个)文件中。该文件应如下所示,每个文件可以有一个函数,也可以有多个函数:

mymeanfun <- function(x){
mean(x)
}

myfilterfun <- function(x, y){
filter(x, y)
}

现在您应该记录代码。您可以使用 roxygen 记录(和导入)。确保从任何其他包中@import 函数,并@export 您希望可用的函数。 Roxygen 和 devtools 将处理其他一切(命名空间、需求等),直到你变得更高级。其他一切都是可选的:

#' My Mean Function
#'
#' Takes the mean
#' @param x any default data type
#' @export
#' @examples
#' mymeanfun(c(1,2,3))
mymeanfun <- function(x){
mean(x)
}
#' My Filter Function
#'
#' Identical to dplyr::filter
#' @param x a data.frame
#' @export
#' @importFrom dplyr filter
myfilterfun <- function(x, y){
filter(x, y)
}

现在从您创建的目录中的 roxygen2 运行 document():

setwd(".\mypackage")
document()

您现在已启动并运行 - 我建议将其放在 github 上并从那里安装:

install_github("yourgithubname/mypackage")

从那时起,您只需调用:

library(mypackage)

每次您需要您的函数时。

有关更多详细信息和更好的文档实践,请参阅 Hadley's book

关于从单独的脚本引用 R 中用户创建的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32060700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com