R语言【taxlist】——对多样性记录的物种列表使用 taxlist 的指南

这篇具有很好参考价值的文章主要介绍了R语言【taxlist】——对多样性记录的物种列表使用 taxlist 的指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 起步(安装与加载)

taxlist 包通过一个对象类和功能(方法)处理分类数据。同名对象类 taxlist 可以进一步与生物多样性记录联系起来(例如,用于植被样地的观测)。

taxlist 包是在repository GitHub (https://github.com/kamapu/taxlist)上开发的,可以使用devtools包安装在R-session中:

library(devtools)

install_github("kamapu/taxlist", build_vignettes=TRUE)

由于这个包已经发表在CRAN中可用,所以也可以使用 install.packages 函数来安装它:

install.packages("taxlist", dependencies = TRUE)

当然,您必须将 taxlist 加载到 R 会话中。

library(taxlist)

2. 从植被表中提取物种列表

2.1 示例数据

taxlist 的主要任务之一是构建分类信息,以便与生物多样性记录进一步联系。这种结构一方面必须与分类学问题(例如同义词、层次结构等)保持一致,另一方面必须灵活地包含不同深度的信息可用性(从普通的物种列表到层次结构)。

示例数据可以通过下行命令加载:

load(file.path(path.package("taxlist"), "Cross.rda"))

示例数据的格式采用 R 的 data.frame,第一列保存这物种名称:

head(Cross[, 1:8])
                TaxonName 3094 3093 3092 3095 3096 3097 3098
1   Eragrostis tenuifolia    + <NA> <NA> <NA> <NA> <NA> <NA>
2        Cyperus sublimis <NA>    + <NA> <NA> <NA> <NA> <NA>
3    Digitaria abyssinica    +    1    2    2    2    3    1
4 Hyparrhenia filipendula <NA> <NA> <NA> <NA> <NA> <NA> <NA>
5    Erigeron floribundus    +    1 <NA> <NA> <NA> <NA> <NA>
6            Aerva lanata    +    1 <NA> <NA> <NA> <NA> <NA>

2.2 普通列表转换为 taxlist

如前所述,交叉关联表的首列是观察样地中出现的物种的名称。因此,我们可以使用这个字符向量来构造一个 taxlist 对象。这可以通过函数 df2taxlist() 实现。

我们可以通过物种名称来构造 taxlist 对象:

sp_list <- Cross[, "TaxonName"]
sp_list <- df2taxlist(x = sp_list)

运行后,在 R 控制台中显示如下内容:

Missing column 'TaxonConceptID' in 'x'. All names will be considered as accepted names.

随即,我们可以查看刚创建的对象信息:

summary(sp_list)

sp_list 对象的信息如下:

object size: 9 Kb 
validation of 'taxlist' object: TRUE 

number of taxon usage names: 35 
number of taxon concepts: 35 
trait entries: 0 
number of trait variables: 0 
taxon views: 0

注意:summary 函数提供了快速浏览对象的信息。当然此函数也可以只针对某一个类群:

summary(object = sp_list, ConceptID = "Erigeron floribundus")

随即在 R 控制台上出现了 Erigeron floribundus 的概要信息:

------------------------------ 
concept ID: 5 
view ID: none 
level: none 
parent: none 

# accepted name: 
5 Erigeron floribundus NA 
------------------------------

3. 内置的数据集

3.1 Easplist

安装 taxlist 包括 Easplist 数据集,它被格式化为一个 taxlist 对象。该数据是数据库SWEA-Dataveg (GIVD ID AF-006)使用的物种列表的一个子集:

我们可以通过 data 来加载 Easplist 数据集,并查看一下该数据集的大概情况:

data(Easplist)
Easplist

随即在 R 控制台中会显示以下信息:

object size: 761.4 Kb 
validation of 'taxlist' object: TRUE 

number of taxon usage names: 5393 
number of taxon concepts: 3887 
trait entries: 311 
number of trait variables: 1 
taxon views: 3 

concepts with parents: 3698 
concepts with children: 1343 

hierarchical levels: form < variety < subspecies < species < complex < genus < family 
number of concepts in level form: 2
number of concepts in level variety: 95
number of concepts in level subspecies: 71
number of concepts in level species: 2521
number of concepts in level complex: 1
number of concepts in level genus: 1011
number of concepts in level family: 186

3.2 访问数据集(set)的组分(slot)

注意:taxlist 对象是通过 S4 对象搭建的。

注意:S4 对象包括的组分统称为 slot,taxlist 对象有 4 个 slots。

访问 S4 对象中 slots 的内容的常用方法是使用 slot(object, name) 或者通过 @ 符号(即:object@name)。

taxlist 对象的特定函数包括 taxon_namestaxon_relationstaxon_traits 和 taxon_views(如有需要,请查阅帮助文档)。

此外,还可以使用 $ 和 [ 方法,第一个方法可以访问 slot taxonTraits,而第二个方法也可以访问对象中的其他 slots。

比如,访问 Easplist 数据集中的 life_form slot:

summary(as.factor(Easplist$life_form))
  acropleustophyte        chamaephyte     climbing_plant facultative_annual    obligate_annual       phanerophyte 
                 8                 25                 25                 20                114                 26 
  pleustohelophyte         reed_plant      reptant_plant      tussock_plant               NA's 
                 8                 14                 19                 52               3576 

3.3 创建子集(subsets)

本包中构建了 subset 方法。这些子集通常应用模式匹配(用于字符向量)或逻辑操作,类似于关系数据库中的查询构建。通过设置 参数【slot】的值,可以将 subset 方法对任何 slot 使用。

对 Easplist 数据集应用 slot 方法,设置参数【subset】和参数【slot】,通过物种名称来构建子集:

Papyrus <- subset(x = Easplist, subset = grepl("papyrus", TaxonName), slot = "names")
summary(Papyrus, "all")

R 控制台可以看到子集 Papyrus 的基本信息:

------------------------------ 
concept ID: 206 
view ID: 1 
level: species 
parent: none 

# accepted name: 
206 Cyperus papyrus L. 

# synonyms (2): 
52612 Cyperus papyrus ssp. antiquorum (Willd.) Chiov. 
52613 Cyperus papyrus ssp. nyassicus Chiov. 
------------------------------

或者换一种思路,通过物种ID来构建子集:

Papyrus <- subset(x = Easplist, subset = TaxonConceptID == 206, slot = "relations")
summary(Papyrus, "all")

控制台中显示的子集信息与上述一致:

------------------------------ 
concept ID: 206 
view ID: 1 
level: species 
parent: none 

# accepted name: 
206 Cyperus papyrus L. 

# synonyms (2): 
52612 Cyperus papyrus ssp. antiquorum (Willd.) Chiov. 
52613 Cyperus papyrus ssp. nyassicus Chiov. 
------------------------------

上面构建的是属级的子集,进一步地,还可以构建种级子集:

Phraaus <- subset(
  x = Easplist,
  subset = charmatch("Phragmites australis", TaxonName), slot = "names"
)
summary(Phraaus, "all")

控制台中显示子集的信息:

------------------------------ 
concept ID: 51996 
view ID: 1 
level: species 
parent: none 

# accepted name: 
51996 Phragmites australis (Cav.) Trin. ex Steud. 

# synonyms (9): 
51997 Phragmites mauritianus Kunth 
53276 Phragmites vulgaris (Lam.) Crép. 
53277 Arundo australis Cav. 
53278 Arundo vulgaris Lam. 
53279 Phragmites australis ssp. humilis (De Not.) Kerguélen 
53280 Phragmites humilis De Not. 
53281 Phragmites communis var. humilis (De Not.) Parl. 
53282 Arundo phragmites L. 
53283 Phragmites pungens Hack. 
------------------------------

3.4 分类层级结构

taxlist 对象有可能包括分类群的父子关系和分类等级。Easplist 数据集中自然包括这些信息,如下所示:

Easplist
object size: 761.4 Kb 
validation of 'taxlist' object: TRUE 

number of taxon usage names: 5393 
number of taxon concepts: 3887 
trait entries: 311 
number of trait variables: 1 
taxon views: 3 

concepts with parents: 3698 
concepts with children: 1343 

hierarchical levels: form < variety < subspecies < species < complex < genus < family 
number of concepts in level form: 2
number of concepts in level variety: 95
number of concepts in level subspecies: 71
number of concepts in level species: 2521
number of concepts in level complex: 1
number of concepts in level genus: 1011
number of concepts in level family: 186

注意:使用 subset() 构建的子集会丢失这些信息,因为原始数据集的父节点或子节点不在子集中。如果你打算恢复父节点和子节点,可以分别使用 get_parents() 或 get_children()。

比如上面构建的 Papyrus 子集并没有包括父子关系的信息:

summary(Papyrus, "all")
------------------------------ 
concept ID: 206 
view ID: 1 
level: species 
parent: none 

# accepted name: 
206 Cyperus papyrus L. 

# synonyms (2): 
52612 Cyperus papyrus ssp. antiquorum (Willd.) Chiov. 
52613 Cyperus papyrus ssp. nyassicus Chiov. 
------------------------------

那么,可以使用 get_parents() 为 Papyrus 子集恢复父节点:

Papyrus <- get_parents(Easplist, Papyrus)
summary(Papyrus, "all")

可以看到 Papyrus 子集中出现了物种对应的属和科信息:

------------------------------ 
concept ID: 206 
view ID: 1 
level: species 
parent: 54853 Cyperus L. 

# accepted name: 
206 Cyperus papyrus L. 

# synonyms (2): 
52612 Cyperus papyrus ssp. antiquorum (Willd.) Chiov. 
52613 Cyperus papyrus ssp. nyassicus Chiov. 
------------------------------ 
concept ID: 54853 
view ID: 2 
level: genus 
parent: 55959 Cyperaceae Juss. 

# accepted name: 
54855 Cyperus L. 
------------------------------ 
concept ID: 55959 
view ID: 3 
level: family 
parent: none 

# accepted name: 
55961 Cyperaceae Juss. 
------------------------------

此外,还有一种表示分类等级树的方法 indentted_list():

indented_list(Papyrus)

可以看到控制台中输出了 Papyrus 子集的分类树关系,十分简洁:

Cyperaceae Juss.
 Cyperus L.
   Cyperus papyrus L. 

4. 对 syntaxonomic scheme 应用 taxlist

4.1 植物群落学分类的例子

为了说明 taxlist 对象的灵活性,下面的示例中将处理一个 syntaxonomic scheme。示例数据结构包括 10 个类群,分为 4 类。


4.2 构建 taxlist 对象

分类信息表保存在一个数据帧中,可以通过下列命令加载:

load(file.path(path.package("taxlist"), "wetlands_syntax.rda"))

在加载得到的 Concepts 数据集中,包含了一列群落分类群名称(syntaxon names),这些群落分类群在之前的数据中等价于物种接受名。该列表将用于在 taxlist 对象中插入新概念(concept)。

Concepts 的内容结构大概如下:

head(Concepts)
  TaxonConceptID Parent                                TaxonName                                 AuthorName
1              1     NA                         Lemnetea minoris    Koch & Tüxen ex den Hartog & Segal 1964
2              2      1                 Salvinio-Eichhornietalia Borhidi ex Borhidi, Muñiz & del Risco 1979
3              3      2                       Pistion stratiotes                (Schmitz 1971) Schmitz 1988
4              4      3 Lemno paucicostatae-Pistietum stratiotes                                Lebrun 1947
5              5     NA                                Potametea                Klika ex Klika & Novák 1941
6              6      5                       Nymphaeetalia loti                                Lebrun 1947
        Level
1       class
2       order
3    alliance
4 association
5       class
6       order

根据 Concepts 的 TaxonConceptID 列用来构建新的 TaxonUsageID 列:

Concepts$TaxonUsageID <- Concepts$TaxonConceptID

最后,使用 df2taxlist 方法构建 taxlist 对象:

Syntax <- df2taxlist(Concepts)

控制台中会输出警告信息:

No values for 'AcceptedName' in 'x'. all names will be considered as accepted names.

使用 level() 为 Syntax 数据集设置新的分类等级:

levels(Syntax) <- c("association", "alliance", "order", "class")

使用 taxon_views() 为 Syntax 数据集设置物种的考证信息:

taxon_views(Syntax) <- data.frame(
  ViewID = 1, Secundum = "Alvarez (2017)",
  Author = "Alvarez M", Year = 2017,
  Title = "Classification of aquatic and semi-aquatic vegetation in East Africa",
  stringsAsFactors = FALSE
)

使用 @ 可以访问 Syntax 数据集的 slot,使用 $ 可以访问 slot 中的变量:

Syntax@taxonRelations$ViewID <- 1

所有操作完成后,再来查看一下 Syntax 数据集:

Syntax

可以看到,对比原始数据集 Concepts,Syntax 有了 taxlist 类的标准格式:

object size: 11.2 Kb 
validation of 'taxlist' object: TRUE 

number of taxon usage names: 26 
number of taxon concepts: 26 
trait entries: 0 
number of trait variables: 0 
taxon views: 1 

concepts with parents: 22 
concepts with children: 16 

hierarchical levels: association < alliance < order < class 
number of concepts in level association: 10
number of concepts in level alliance: 7
number of concepts in level order: 5
number of concepts in level class: 4

注意:new() 方法可以创建一个空的 taxlist 对象(prototype),而 leves() 方法可以设置自定义的分类等级(syntaxonomical hierarchies)。

对于后者,插入的分类等级必须是从低到高。

然后,使用 taxon_views() 方法将定义 syntaxonomic scheme中包含的概念的引用插入到对象中;

最后,使用 add_concept() 方法插入概念。

下面,将插入那些被认为是各自 syntaxa 同义词的名称。

同义词包含在数据集 Synonyms中。

head(Synonyms)
  TaxonConceptID                             TaxonName                 AuthorName
1              1                          Stratiotetea    den Hartog & Segal 1964
2              3                  Pistion pantropicale               Schmitz 1971
3              8               Utriculario-Nymphaeetum (Lebrun 1947) Léonard 1950
4              8 Utriculario exoletae-Nymphaeetum loti    Szafranski & Apema 1983
5              9                          Phragmitetea      Tüxen & Preising 1942
6             10                           Papyretalia                Lebrun 1947

使用 add_synonym() 方法向 Syntax 中添加同义词信息:

Syntax <- add_synonym(Syntax,
  ConceptID = Synonyms$TaxonConceptID,
  TaxonName = Synonyms$TaxonName, AuthorName = Synonyms$AuthorName
)

最后,关联的代码号将作为i他们的属性值插入到 taxonTraits slot中。

head(Codes)
  TaxonConceptID Code
1             12  HE1
2             13  HE2
3             14  HE3
4             20  HE4
5             17  HE5
6             18  HE6

使用 taxon_traits() 为 Syntax 设置特征信息:

taxon_traits(Syntax) <- Codes
Syntax
object size: 13.8 Kb 
validation of 'taxlist' object: TRUE 

number of taxon usage names: 37 
number of taxon concepts: 26 
trait entries: 10 
number of trait variables: 1 
taxon views: 1 

concepts with parents: 22 
concepts with children: 16 

hierarchical levels: association < alliance < order < class 
number of concepts in level association: 10
number of concepts in level alliance: 7
number of concepts in level order: 5
number of concepts in level class: 4

比如,您可以通过关联获得父子链:

Nymplot <- subset(Syntax, charmatch("Nymphaeetum", TaxonName), slot = "names")
summary(Nymplot, "all")
------------------------------ 
concept ID: 8 
view ID: 1 
level: association 
parent: none 

# accepted name: 
8 Nymphaeetum loti Lebrun 1947 

# synonyms (2): 
29 Utriculario-Nymphaeetum (Lebrun 1947) Léonard 1950 
30 Utriculario exoletae-Nymphaeetum loti Szafranski & Apema 1983 
------------------------------

注意:逻辑值参数【keep_parents】和参数【keep_children】来保留子集中的分类等级信息:

Nymplot <- subset(Syntax, charmatch("Nymphaeetum", TaxonName),
  slot = "names",
  keep_parents = TRUE
)
summary(Nymplot, "all")
------------------------------ 
concept ID: 5 
view ID: 1 
level: class 
parent: none 

# accepted name: 
5 Potametea Klika ex Klika & Novák 1941 
------------------------------ 
concept ID: 6 
view ID: 1 
level: order 
parent: 5 Potametea Klika ex Klika & Novák 1941 

# accepted name: 
6 Nymphaeetalia loti Lebrun 1947 
------------------------------ 
concept ID: 7 
view ID: 1 
level: alliance 
parent: 6 Nymphaeetalia loti Lebrun 1947 

# accepted name: 
7 Nymphaeion loti Lebrun 1947 
------------------------------ 
concept ID: 8 
view ID: 1 
level: association 
parent: 7 Nymphaeion loti Lebrun 1947 

# accepted name: 
8 Nymphaeetum loti Lebrun 1947 

# synonyms (2): 
29 Utriculario-Nymphaeetum (Lebrun 1947) Léonard 1950 
30 Utriculario exoletae-Nymphaeetum loti Szafranski & Apema 1983 
------------------------------

通过 indented_list() 方法简便地展示 Nymplot 的分类树:文章来源地址https://www.toymoban.com/news/detail-823903.html

indented_list(Nymplot)
Potametea Klika ex Klika & Novák 1941
 Nymphaeetalia loti Lebrun 1947
  Nymphaeion loti Lebrun 1947
   Nymphaeetum loti Lebrun 1947

到了这里,关于R语言【taxlist】——对多样性记录的物种列表使用 taxlist 的指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux设备模型统一:桥接硬件多样性与应用程序开发的关键

    在Linux的宏大世界中,各种各样的硬件设备如星辰般繁多。从常见的USB设备到复杂的网络接口卡,从嵌入式设备到强大的服务器,Linux需要在这些差异极大的硬件上运行。这就引出了一个问题:Linux是如何统一这些不同硬件的设备模型的呢?本文将探讨Linux是如何针对不同的硬

    2024年04月10日
    浏览(41)
  • 计算机视觉中的多样性: 相似性度量的实践与应用

    计算机视觉(Computer Vision)是人工智能领域的一个重要分支,主要关注于从图像和视频中抽取和理解有意义的信息。在计算机视觉任务中,相似性度量是一个重要的概念,它用于衡量两个特征向量之间的相似程度。随着计算机视觉技术的不断发展,我们需要更加准确、高效地衡

    2024年02月20日
    浏览(43)
  • 解密Prompt系列20. LLM Agent之再谈RAG的召回多样性优化

    几个月前我们就聊过RAG的经典方案解密Prompt系列14. LLM Agent之搜索应用设计。前几天刚看完openAI在DevDay闭门会议上介绍的RAG相关的经验,有些新的感悟,借此机会再梳理下RAG相关的优化方案。推荐直接看原视频(外网)A Survey of Techniques for Maximizing LLM Performance RAG最关键的一环其

    2024年02月05日
    浏览(46)
  • Talk | 东京大学博士生刘海洋:多模态驱动谈话动作生成-质量与多样性

    本期为 TechBeat人工智能社区 第 471 期 线上Talk! 北京时间 2 月1 日 (周三)20:00 , 东京大学情报理工系博士生—— 刘海洋 的Talk将准时在TechBeat人工智能社区开播! 他与大家分享的主题是:  “多模态驱动谈话动作生成:质量与多样性 ” ,届时将介绍多模态驱动谈话动作生成领

    2024年02月10日
    浏览(35)
  • Nature子刊 | 周集中团队揭示长期气候变暖导致草地土壤微生物多样性降低

    题目 :Reduction of microbial diversity in grassland soil is driven by long-term climate warming 发表杂志 :Nature Microbiology 发表年月:2022年6月 第一作者 :吴林蔚、Zhang Ya、郭雪 通讯作者 :周集中 第一单位 :北京大学城市与环境学院生态研究所 影响因子 :17.74 DOI :10.1038/s41564-022-01147-3 原文

    2024年02月08日
    浏览(34)
  • 易基因:群体分析揭示了DNA甲基化在番茄驯化和代谢多样性中的作用|组学研究

    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 2023年3月23日,海南大学三亚南繁研究院/热带作物学院博士研究生郭昊等为第一作者、王守创教授为通讯作者在《Science China Life Sciences》杂志发表题为“Population analysis reveals the roles of DNA methylation in tomato

    2023年04月11日
    浏览(42)
  • 2011年认证杯SPSSPRO杯数学建模B题(第二阶段)生物多样性的评估全过程文档及程序

    原题再现:    2010 年是联合国大会确定的国际生物多样性年。保护地球上的生物多样性已经越来越被人类社会所关注,相关的大规模科研和考察计划也层出不穷。为了更好地建立国际交流与专家间的合作,联合国还建立了生物多样性和生态系统服务政府间科学政策平台(

    2024年04月13日
    浏览(50)
  • Midjourney|文心一格prompt教程[技巧篇]:生成多样性、增加艺术风格、图片二次修改、渐进优化、权重、灯光设置等17个技巧等你来学

    我认为学习图片类的 prompt,跟学习画画是类似的,最好的学习方法不是直接用模板。 而是拿真图,或者别人生成的图来临摹。英文不好,也可以先写中文,然后让 ChatGPT 翻译。当你临摹了几张后,你就会慢慢搞懂如何做出类似的图了。 拿上面的那个握手图为例,我们仔细观

    2024年02月10日
    浏览(56)
  • R语言实践——rWCVP生成可发表级别的物种发现记录矩阵

    世界维管植物名录(WCVP)提供了已知的340,000种维管植物物种的分布数据。该分布数据可用于构建植物物种名录的发现记录矩阵,rWCVP可以提供帮助。 除了 rWCVP 之外,还可以使用 tidyverse 包进行数据操作和绘图,并使用 gt 包来格式化表格。 先做好准备工作 在此示例中,使用

    2024年02月11日
    浏览(22)
  • R语言【taxlist】——add_concept(),update_concept():将新的分类概念添加到 taxlist 类对象中

    Package  taxlist  version 0.2.4 将新的分类概念添加到现有的 taxlist 对象中的可替换方法。 参数【taxlist】:一个 taxlist 对象。 参数【TaxonName】:具有新分类单元概念的接受名的字符向量。 参数【...】:方法之间传递的进一步参数。 参数【insert_view】:一个数字(整数)向量,指示要

    2024年01月25日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包