是否有函数/库将描述文件解析为列表对象?

msh*_*fer 0 parsing r text-parsing cran

动机

我想构建一个基于各种最优性度量的包排名算法。

我今天读了一些东西 [tidyverse],它指向以下命令:

元素

tools::package_dependencies(package="liteq", recursive=TRUE)[["liteq"]]
Run Code Online (Sandbox Code Playgroud)

它可以很容易地包装到一个函数中(正在进行中):

help.packageInfo = function(package, key="dependencies", ...)
    {
    # number of authors
    # function to PARSE DESCRIPTION FILE
    
    tools::package_dependencies(package=package, recursive=TRUE)[[package]];
    }


Run Code Online (Sandbox Code Playgroud)

示例[好]

help.packageInfo("digest");
Run Code Online (Sandbox Code Playgroud)

示例[不好]

help.packageInfo("tidyverse");
Run Code Online (Sandbox Code Playgroud)

如何提取DESCRIPTION文件数据

Package: tools
Version: 4.2.1
Priority: base
Title: Tools for Package Development
Author: R Core Team
Maintainer: R Core Team <do-use-Contact-address@r-project.org>
Contact: R-help mailing list <r-help@r-project.org>
Description: Tools for package development, administration and documentation.
License: Part of R 4.2.1
Suggests: codetools, methods, xml2, curl, commonmark, knitr, xfun,
        mathjaxr
NeedsCompilation: yes
Built: R 4.2.1; x86_64-w64-mingw32; 2022-06-23 09:27:10 UTC; windows
ExperimentalWindowsRuntime: ucrt
Run Code Online (Sandbox Code Playgroud)

描述文件可以告诉我很多事情(作者数量、建议数量、导入、要求),甚至对于我安装到系统上的非 CRAN 存储库也是如此。我想问,您是否见过将文件解析DESCRIPTION为列表对象的库/函数?

G. *_*eck 7

评论中指出

pkg <- "stats"
packageDescription(pkg)
Run Code Online (Sandbox Code Playgroud)

甚至更短。

如果您拥有的不是已安装的软件包而只是描述文件,则使用如下所示的 read.dcf。


假设安装了该包,获取描述文件的路径,然后使用 read.dcf 给出一个单行矩阵,其列保存数据。

pkg <- "stats"
desc_path <- system.file("DESCRIPTION", package = pkg)
m <- read.dcf(desc_path)
Run Code Online (Sandbox Code Playgroud)

它可以按原样使用,也可以根据您的需要转换成各种形式。

DF <- as.data.frame(m) # one row data.frame

stack(DF) # 2 column data.frame

as.list(DF) # named list

unlist(DF) # named character vector
Run Code Online (Sandbox Code Playgroud)