我有一个包,我正在讨论改变函数的代码。我想但是要确定这会影响其他一切。我把它作为github上的一个包和一个本地回购。我最初的想法是列出包中的所有函数(甚至是未在命名空间中加载的函数),然后是一些如何将所有函数发送到控制台。然后我可以将代码剪切并粘贴到文本编辑器中,并查找正在使用的函数的实例。
如果能够轻松解决这个问题,我不想重新发明轮子。如果我的方式似乎是最合理的,我仍然不知道如何使这种情况发生。
答案 0 :(得分:7)
它被称为单元测试。虽然它不是灵丹妙药(“你无法证明或测试正确性”),但却有很大帮助。
请参阅this page at the R Wiki了解相关信息。
答案 1 :(得分:0)
这是查看哪些函数受其影响或包含其他函数的相当快速的方法。最近,我发现在使用导入时我在包函数内部不需要require
或library
。因此,我使用该软件包的函数termco.a
查看了我的软件包,以查找library
或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