gpt4 book ai didi

r - R 包中的代码 : find out *which* package/namespace it is in

转载 作者:行者123 更新时间:2023-12-04 16:08:12 26 4
gpt4 key购买 nike

R 包中的代码有没有办法找出它属于哪个包或命名空间?

背景:我发现我在包之间有通用代码,只是包名称不同。一个常见的例子是 tests/testthat.R :

library(testthat)
library(ShiftedExcitation)

test_check("ShiftedExcitation")

如果代码可以找出它属于哪个包或命名空间,我就可以避免现在给出包名称的许多地方。

现在我定义了一个包含包名的隐藏变量,比如

.PKG <- "ShiftedExcitation"

然后使用类似 * 的东西
library(testthat)
library(.PKG, character.only = TRUE)

test_check(.PKG)

但我很好奇是否存在更优雅的解决方案。

* 直到 testthat.R 为止我都没有得到这个工作在包命名空间之外进行评估。它确实适用于定义 unittest但是,包代码中的函数。

最佳答案

接近答案:

@MartinMorgan 的使用提示 topenv ()非常接近。但事实证明,在使用 testthat 运行单元测试时, testthat在搜索路径中的包命名空间之前。

所以这是目前的状态:

.findmyname <- function() {
pkgs <- .packages ()

if (pkgs [1] == "testthat")
pkgs [2]
else
pkgs [1]
}

此函数从包内和 tests/testthat.R 中查找相关包的名称。 . (当然,在 .findmyname () 调用之前,在 tests/testthat.R 中不知道包中定义的任何 library ......)

关于r - R 包中的代码 : find out *which* package/namespace it is in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32522835/

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