我正在重构一个导入许多其他包的完整名称空间的包。我认为这些依赖项中有很多是用于单个函数调用的使用,最好使用importFrom进行处理,或者是已经不再使用的孤立依赖项。
由于包中有足够的代码,手动检查每一行以查找陌生的函数调用将变得很繁琐。
如何确定在包中使用了多少次来自导入名称空间的对象以及它们的使用位置?请注意,此包不包括单元测试。
以下是可复现的示例:
DESCRIPTION
文件:
Package: my_package
Title: title
Version: 0.0.1
Authors@R: person(
given = "A",
family = "Person",
role = c("aut", "cre"),
email = "person@company.com"
)
Description: Something
License: Some license
Encoding: UTF-8
LazyData: true
RoxygenNote: 7.1.1
Imports:
dplyr,
purrr,
stringr
NAMESPACE
文件:
import(dplyr)
import(purrr)
import(stringr)
my_package.R
文件:
#' my_package
#' @docType package
#' @name my_package
NULL
#' @import dplyr
#' @import purrr
#' @import stringr
NULL
functions.R
文件
#' add 1 to "banana" column and call it "apple"
#' @description demonstrate a variety of dplyr functions
#' @param x a data.frame object
#' @return a data.frame object with columns "apple" and "banana"
#' @examples
#' my_fruit <- data.frame(banana = c(1,2,3), pear = c(4,5,6))
#' my_function(my_fruit)
#' @export
my_function <- function(x) {
x %>%
mutate(apple = banana + 1) %>%
select(apple, banana)
}
我正在寻找一种解决方案,可以识别%>%
、mutate
和select
是从dplyr
导出的,%>%
是从purrr
导出的,并且未使用附加命名空间stringr
中的任何导出项。 对于像%>%
这样从多个命名空间导出的函数,区分导出来自哪个命名空间并不是很重要(在本例中,两个%>%
均为magrittr
依赖关系的重新导出),因为当加载包时发生实际掩码操作时会生成警告。
awk/perl/sed
来遍历每个文件,并检查其他包中特定函数的调用。 - Onyambu