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为列表对象的库/函数?
评论中指出
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)