0

我有一个包,正在讨论更改函数的代码。我会但想确定这如何影响其他一切。我在 github 和本地 repo 上有这个包。我最初的想法是列出包中的所有函数(即使是未加载到命名空间中的函数),然后列出如何将所有这些函数发送到控制台。然后我可以将代码剪切并粘贴到文本编辑器中,并查找正在使用的该函数的实例。

如果这个问题有一个简单的解决方案,我不想重新发明轮子。如果我的方式看起来是最合理的,我仍然不知道如何实现。

4

2 回答 2

7

这称为单元测试。虽然它不是灵丹妙药(“你无法证明或测试正确性”),但它有很大帮助。

有关介绍,请参阅R Wiki 上的此页面

于 2012-08-03T20:02:02.393 回答
0

这是查看哪些函数受其他函数影响或包含其他函数的一种相当快速的方法。最近,我发现在使用导入时我不需要require或在包函数内部。library因此,我使用该包的功能查看了我的包,termco.a以查找带有libraryor的事件require。第一部分传递包 R 目录的路径并逐行读取每个文件。然后termoco.a计算出现次数并使用索引仅返回包含这些术语的那些函数。您必须下载该软件包的测试版qdap

安装qdap

library(devtools)
install_github("qdap", "trinker")

查找条款:

WD <- getwd()
setwd("C:/Users/trinker/GitHub/qdap/R/")
m <- sapply(dir(), readLines)
n <- do.call(rbind, lapply(seq_along(m), function(i){
    data.frame(fun=rep(names(m)[i], length(m[[i]])), text=m[[i]])
}))

x <- with(n, termco.a(text, fun, qcv(require, library)))
x$raw[rowSums(x$raw[, -c(1:2)]) > 0, ]

输出:

> x$raw[rowSums(x$raw[, -c(1:2)]) > 0, ]
                   fun word.count require library
1   adjacency_matrix.R        198       0       1
59         formality.R        954       2       0
112            qprep.R        145       4       4
116  read.transcript.R        563       1       1
144         termco.a.R        614       1       0
146         termco.d.R        535       1       0
156      trans.cloud.R        928       5       0
于 2012-11-17T02:29:19.493 回答