当然还有其他方法可以做到这一点,但是如果你能得到你可以组合的包的功能列表readLines(将脚本读成R作为字符),grepl(以检测匹配),和sapply.我会抢函数的方法是使用p_funs从吃豆子包.(完全披露:我是作者之一).
这是一个我保存为"test.R"的示例脚本
library(ggplot2)
x <- rnorm(20)
y <- rnorm(20)
qplot(x, y)
summary(x)
Run Code Online (Sandbox Code Playgroud)
这是一个会话,我会检测使用哪些功能
script <- readLines("test.R")
funs <- p_funs(ggplot2)
out <- sapply(funs, function(input){any(grepl(input, x = script))})
funs[out]
#[1] "ggplot" "qplot"
Run Code Online (Sandbox Code Playgroud)
如果您不想安装pacman,可以使用任何其他方法获取包中的函数列表.你可以用它替换它
funs <- objects("package:ggplot2")
Run Code Online (Sandbox Code Playgroud)
而你基本上会得到相同的答案.
请注意,您可能会获得比文件中实际更多的匹配项 - 请注意,ggplot函数实际上并不在我的脚本中,而是字符串"ggplot" library(ggplot2).因此,在初始扫描文件后,您可能仍需要进行一些额外的挖掘.