用plantlist程序包查询和处理植物学名"

简介

plantlist是用来查询和处理植物学名的R程序包,自2013年发布以来,受到很多老师和同学的关注。R软件中,类似的程序包还有 taxize (https://cran.r-project.org/web/packages/taxize/index.html)、Taxonstand(https://cran.r-project.org/web/packages/Taxonstand/index.html)等。

相比之下plantlist的主要特点在于:

  1. 使用校对过的内置数据,使用过程中不需要连网。

  2. 优化了查询单个物种名是否为接受名的算法,速度比taxize更快

  3. 查询结果所显示的信息更加简洁清晰

  4. 支持用中文名批量查询学名

plantlist的主要功能

  1. 批量查询植物科属,内置的数据主要来源于The Plant List网站(www.theplantlist.org/),其中被子植物采用APGIII分类系统,同时提供维管植物每个科的编号,极大方便了植物标本的管理,方便植物名录处理等。

  2. 直接生成科/属/种的列表, 以便导入Phylomatic等软件生成进化树

  3. 用中文名批量查询植物学名以及科属

  4. 查询学名的接受状态以及完整学名等

plantlist包内的函数

内置数据

软件安装

plantlist必须要先安装R才能使用。由于plantlist内部函数CTPL2函数需要使用openxlsx程序包读取xlsx文件,所以也要安装openxlsx所依赖的Rtools以及Rcpp,并配置好启动路径才能正常使用。

安装R软件

R软件下载的地址为:(http://cran.r-project.org/bin/windows/base/)。请尽量下载最新版本的R并按照默认路径安装。因为程序运行过程中涉及UTF8字符转换,所以R版本不能低于3.0.3。

{ width=90% }

图1. R软件windows版本下载页

{ width=90% }

图2. R软件3.3.1的登录界面

安装Rstudio

推荐用Rstudio的Console输入函数查询,这是因为在部分Windows系统中,R自带的RGui中无法正常输入汉字,而Rstudio较好地解决了字符编码和汉字输入的问题。建议所有文本文件都使用UTF-8编码,以降低出现乱码的机会。

Rstudio可以在(https://www.rstudio.com/products/rstudio/download/) 下载。

安装Rtools

Rtools是编写R程序包的工具软件,含有读写xlsx文件所需的unzip和zip函数,安装时必须允许Rtools修改启动路径

Rtools的下载地址为(https://cran.r-project.org/bin/windows/Rtools/)。安装Rtools时须允许其修改系统路径system PATH。

{ width=90% }

图3. Rtools下载页面,请以列表中第一行未冻结的版本为准

{ width=90% }

图4. 安装Rtools时应该允许其修改system PATH

Rtools安装完成后可以通过以下方式检查是否安装成功:

{ width=90% }

图5. 在控制台中输入zip, 如图所示,若未提示错误,则Rtools安装和配置成功

安装openxlsx程序包

openxlsx程序包用来读取和保存带有植物名录的xlsx模板,在Rconsole中输入:

install.packages("openxlsx")

然后,在弹出的窗口选择距离较近的CRAN镜像,openxlsx程序包会自动下载并安装好。部分地区由于网络限制,不一定能打开r-project网站的云服务,以致报错。此时可以用以下命令从指定的CRAN镜像网站安装:

install.packages("ctv", repos = "http://cran.R-project.org")

其中 http://cran.R-project.org 可替换为任何CRAN镜像名。CRAN镜像列表见以下网址:https://cran.r-project.org/mirrors.html

{ width=90% }

图6. 通过install.packages命令安装openxlsx程序包

安装 plantlist程序包

由于plantlist程序包内置的数据约20M, 不便提交到CRAN。稳定版本在R-Forge (https://r-forge.r-project.org/R/?group_id=2052), 最新版本的源代码保存在github。

{ width=90% }

图7. Rforge网站上plantlist的页面

从R-Forge下载安装

命令是:

install.packages("plantlist", repos="http://R-Forge.R-project.org")

从github下载和安装

plantlist的github网址是(https://www.github.com/helixcn/plantlist)。可使用如下命令安装:

devtools::install_github("helixcn/plantlist")

若尚未安装devtools程序包, 需要输入以下命令安装:

install.packages("devtools")

至此,plantlist及其依赖的程序包都安装好了。

plantlist各函数的用法

在使用plantlist之前,必须用library(plantlist) 加载plantlist。查询每个函数的使用方法, 请输入?函数名,例如:?TPL即可查看TPL函数的帮助界面。

CTPL() 用中文名查询科、属、分布、海拔、IUCN等级数据

调用方式和参数如下: CTPL(taxa = NULL, print_as_list = TRUE)

其中taxa是植物的中文名, print_as_list 只是打印方式的选项,如果为TRUE, 则用列表的方式打印。

注意:用列表的方式打印,只是为了显示的方便,本函数返回值为data.frame, print_as_list参数并不会改变返回值的数据类型。

示例代码如下:

library(plantlist)
CTPL(c("杨梅", "多花泡花树"))
CTPL(c("网脉实蕨", "江南星蕨"))

# 将结果保存到Excel文件中
library(openxlsx)
rrr <- CTPL(c("侧金盏花", 
              "多花泡花树", 
              "网脉山龙眼", 
              "绿樟", 
              "网脉实蕨"))
write.xlsx(rrr, "results.xlsx")

# 纯文本文件的读写
# Save to UTF-8
writeLines(text = c("桃儿七", 
                    "连香树", 
                    "水青树", 
                    "绿樟", 
                    "网脉实蕨"), 
    con = "test_species.txt", 
    useBytes = TRUE)
sp <- readLines("test_species.txt", encoding = "UTF-8")
CTPL(sp)

{ width=80% }

图 8. CTPL的查询结果

CTPL2() 用中文名查询科、属、分布、海拔、IUCN等级数据

CTPL2可直接读取Excel文件第一列的数据,并以此和内置的cnplants_dat数据匹配,结果保存在自动生成的xlsx文件中。

示例代码如下:

# Example of CTPL2
library(plantlist)
library(openxlsx)
species <- data.frame(plants = c("侧金盏花",
                                 "多花泡花树", 
                                 "网脉山龙眼", 
                                 "绿樟", 
                                 "网脉实蕨",
                                 "无根藤",
                                 "黄樟",
                                 "香叶树",
                                 "山鸡椒",
                                 "潺槁木姜子",
                                 "豺皮樟",
                                 "浙江润楠",
                                 "广东润楠",
                                 "广寄生",
                                 "两广梭罗",
                                 "假苹婆",
                                 "地桃花",
                                 "白背黄花稔",
                                 "通泉草",
                                 "野牡丹"))
write.xlsx(species, "species_to_search.xlsx")
CTPL2("species_to_search.xlsx")

{ width=80% }

图9. CTPL2的查询结果。

status() 查询每个学名在The Plant List 1.1 的接受状态

函数的参数 status(species =NA, exact =TRUE, spell_error_max =NULL)

status函数可以查询变种var. 亚种 subsp. 以及变型f. 是否接受等信息.

示例代码:

library(plantlist)

## 建立物种名单
sp <-c("Elaeocarpus decipiens",
       "Syzygium buxifolium",
       "Daphniphyllum oldhamii",
       "Loropetalum chinense",
       "Rhododendron latoucheae",
       "Rhododendron ovatum",
       "Vaccinium carlesii",
       "Schima superba")

### 检查名单内每个种的接受情况以及接受名
status(sp)

### 检查一个种的接受情况
status("Myrica rubra")              ## 杨梅
status("Adinandra millettii")       ## 杨桐
status("cyclobalanopsis neglecta ") ## 竹叶青冈
status("Lirianthe henryi")          ## 大叶木兰

#### 同时检查几个学名的状态
status(c("Myrica rubra", 
         "Adinandra millettii",
         "Machilus thunbergii",
         "Ranunculus japonicus",
         "Cyclobalanopsis neglecta"))

### Check the statusof a scientific name (with or without authorship)
### 查询学名是否接受
status("Hypoxis filifolia")

### Subspecies (withor without authorship)
### 查询亚种是否接受
status("Hypoxis kilimanjarica subsp. kilimanjarica")

### Variaty (with orwithout authorship)
### 查询变种是否接受
status("Hypoxis erecta var. aestivalis")

### Form (with orwithout authorship)
### 查询变型是否接受
status("Hypoxis hirsuta f. villosissima")

### 重要提示: 由于表示变型的 f. 有时也用于命名人中,
### 因此,用status函数在查询变型时, 请勿为种添加命名人,
### 但是变型的命名人可以提供或者不提供,具体为:
"Hypoxis hirsuta (L.)Coville f. vollosissima Fernald"#  (不能处理)
"Hypoxis hirsuta f. vollosissima Fernald"#(能处理)
"Hypoxis hirsuta f. vollosissima"#(能处理)

taxa.table() 基于TPL查询结果制作科属种列表

查询结果多用于在Phylomatic软件中构建进化树。示例代码如下:

sp <- c( "Ranunculus japonicus", 
         "Anemone udensis",
         "Ranunculus repens",
         "Ranunculus chinensis",
         "Solanum nigrum",
         "Punica sp." )
res <- TPL(sp)
taxa.table(res)

TPL()根据拉丁名,查询目、科、属、以及科的编号

TPL函数输入的数据必须是字符串格式的向量。可以查询科、属、种的相应信息,但是并不会提示学名是否为接受名。查询学名是否有效, 请用status函数。

TPL("Carex") # 查询薹草属
TPL("Apple") # 查询苹果的英文名
splist <- c("Ranunculus japonicus", 
            "Solanum nigrum",
            "Punica sp.", 
            "Machilus", 
            "Today", 
            "####" ) ### 查询多个种
res <- TPL(splist)

引用plantlist程序包

如果您使用了plantlist程序包,请通过以下方式引用:

Jinlong Zhang (2018). plantlist: Looking Up the Status of Plant Scientific Names based on The Plant List Database. R package version 0.5.3. https://github.com/helixcn/plantlist/

致谢

感谢高芳銮、李嵘、张健、朱慧玲、刘冰、胡晓丽、冯嘉恩、黄世芳、俞筱押、胡海花、李家湘、刘水银、鲍志贵、张美霞、葛斌杰、孔德良、刘振稳、龙文兴、金建军、夏尚文、李霞、陶旺兰、李秋萍、易逸瑜、张璋、骆争荣、彭舜磊、郭文永、贾蕙君等各位老师同学提出宝贵意见和建议。

参考文献



Try the plantlist package in your browser

Any scripts or data that you put into this service are public.

plantlist documentation built on May 2, 2019, 4:45 p.m.