gpt4 book ai didi

r - 有没有一种简单的方法可以判断 R 脚本是否使用了加载包中的任何函数?

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

例如,如果运行 script.A :

 library(ggplot2)
a <- 12

然后 script.B
library(ggplot2)
b <- runif(100)
qplot(b)

我可以说 script.A实际上并没有使用 ggplot2 , 而 script.B做过。

最佳答案

正常加载库并跟踪包环境(和命名空间)中的所有函数。我将使用一个小的辅助函数来做到这一点:

trap_funs <- function(env)
{
f <- sapply(as.list(env, all.names=TRUE), is.function)
for( n in names(f)[f] ) trace(n, bquote(stop(paste("Script called function", .(n)))), where=env)
}

例子:
library(data.table)
trap_funs(as.environment("package:data.table"))
trap_funs(asNamespace("data.table"))

需要第二个语句来确保诸如 data.table::xxx() 之类的调用。也会被困。

例子:
> as.data.table(mtcars)
Tracing as.data.table(mtcars) on entry
Error in eval(expr, envir, enclos) : Script called function as.data.table

请注意,代码被中断了。

关于r - 有没有一种简单的方法可以判断 R 脚本是否使用了加载包中的任何函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18300679/

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