我正在寻找一种快速的 R 解决方案来读取包 NAMESPACE
文件。该解决方案应包含已预处理(和聚合)的记录以及单独的导入和导出。
不幸的是,我不能使用getNamespaceExports("dplyr")
/getNamespaceImports("dplyr")
,因为他们需要包加载到 R session ,速度太慢。
我需要一个简单地处理 NAMESPACE
文件中的文本的解决方案。任何使用外部包的解决方案以及部分解决方案仍然受到欢迎。
我们可以通过像 readLines("https://raw.githubusercontent.com/cran/dplyr/master/NAMESPACE")
这样的调用来获取原始数据。 roxygen2
生成的文件格式正确,但并非所有手动生成的文件都是如此。
编辑:
感谢 Konrad R. 的回答,我可以在我的新 CRAN 包 - pacs
中开发此类功能。我建议检查 pacs::pac_namespace 函数。甚至还有一个函数更进一步,比较不同软件包版本 pacs::pac_comapre_namespace
之间的 NAMESPACE 文件。
最佳答案
该函数作为 base::parseNamespaceFile
包含在 R 中。不幸的是,该函数并不直接将路径作为参数。相反,它根据包名称和库位置构建路径。然而,有了这些知识,你应该能够调用它;例如:
parseNamespaceFile('dplyr', .libPaths()[1L])
编辑
有人必须记住,整个包导入(如import(rlang)
)仍然必须使用相同的函数调用,并提取它们的导出。两个核心元素是在 NAMESPACE 代码上使用 parse
,然后使用递归提取函数 parseDirective
。
关于读取包NAMESPACE文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68625994/