在嵌套表达式中搜索::的使用

时间:2014-07-13 23:58:21

标签: r cran

通过嵌套表达式搜索::运算符引用的命名空间的优雅方法是什么?例如:

findnamespaces <- function(expr){
  namespaces <- character()
  if(is.call(expr) && identical(expr[[1]], as.name("::"))){
    namespaces <- deparse(expr[[2]])
  }
  if(!is.name(expr) && !is.atomic(expr)){
    for(i in seq_along(expr)){
      namespaces <- c(namespaces, findnamespaces(expr[[i]]))     
    }
  }
  return(unique(namespaces))
}

似乎可以解决基本案例:

code <- "foo::test(bar::test)\n function(x){return(baz::test)}"
findnamespaces(parse(text=code))
[1] "foo" "bar" "baz"

然而,感觉有点hacky。是否有一个更原生的方法做这样的事情?似乎CMD check需要它来验证Suggests:中是否正确声明了所有DESCRIPTION个包。

0 个答案:

没有答案