如何将R包DESCRIPTION文件的Authors@R字段读取为向量
首先明确:packageDescription()返回的Authors@R字段本身就是符合R语法的可执行代码字符串,只需对其做解析执行即可得到标准的作者向量对象。
方法1:仅用基础包实现(无额外依赖)
直接通过parse()解析字符串、eval()执行解析后的表达式即可:
# 读取dplyr包的Authors@R字段 authors_raw <- packageDescription("dplyr")$`Authors@R` # 解析并执行得到person类向量 authors_vector <- eval(parse(text = authors_raw))
得到的authors_vector是标准的person类型向量,可直接做各类提取操作:
# 打印所有作者信息 print(authors_vector) # 提取所有作者的完整姓名 sapply(authors_vector, function(p) paste(p$given, collapse = " ", p$family)) # 筛选出当前包的维护者(role为cre的作者) maintainer <- authors_vector[sapply(authors_vector$role, function(r) "cre" %in% r)] # 提取所有作者的ORCID编号 sapply(authors_vector, function(p) p$comment[["ORCID"]])
方法2:使用desc包(更简便,无需手动处理解析逻辑)
如果允许安装第三方工具包,desc包已经封装了DESCRIPTION文件的全量操作,直接调用封装好的方法即可:
# 首次使用先安装包 # install.packages("desc") library(desc) # 直接读取包描述文件并返回格式化的作者向量 pkg <- desc(package = "dplyr") authors_vector <- pkg$get_authors()
内容的提问来源于stack exchange,提问作者Taz
相关产品推荐
相关产品推荐

