You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中通过通用名获取作物的科学名称?

R语言实现作物通用名转科学名称

可以结合taxize和rgbif包实现需求,以下是针对作物类物种的封装函数及使用方法:

1. 安装并加载依赖包

# 首次运行安装包
install.packages(c("rgbif", "taxize"))

# 加载包
library(rgbif)
library(taxize)

2. 封装查询函数

这个函数优先从权威数据库查询,同时过滤作物相关类群(通过作物常见所属科筛选,可按需扩展):

get_scientific_name <- function(common_name) {
  # 用taxize查询通用名对应物种
  tax_result <- taxize::resolve(common_name, database = "gbif")
  
  # 筛选已确认的有效结果
  valid_result <- tax_result[!is.na(tax_result$scientificName) & tax_result$status == "ACCEPTED", ]
  
  # 定义常见作物所属科,可根据需求扩展
  crop_families <- c("Lauraceae", "Poaceae", "Solanaceae", "Fabaceae", "Rosaceae", 
                     "Brassicaceae", "Cucurbitaceae", "Asteraceae")
  
  # 过滤作物类物种
  valid_crop <- valid_result[valid_result$family %in% crop_families, ]
  
  # 返回第一个匹配的科学名
  if (nrow(valid_crop) > 0) {
    return(valid_crop$scientificName[1])
  }
  
  # 若taxize无结果,尝试rgbif的骨干名称查询
  gbif_result <- rgbif::name_backbone(name = common_name, rank = "species")
  if (!is.null(gbif_result$scientificName) && gbif_result$status == "ACCEPTED") {
    if (gbif_result$family %in% crop_families) {
      return(gbif_result$scientificName)
    }
  }
  
  # 无匹配作物时返回NA
  return(NA_character_)
}

3. 测试函数

# 测试鳄梨查询
get_scientific_name("avocado")
# 输出:"Persea americana"

注意事项

  • 作物科列表可根据自身需求扩展,比如添加棕榈科(Arecaceae)、芸香科(Rutaceae)等
  • 部分通用名可能对应多个物种,函数默认返回第一个匹配的有效作物物种,若需多结果可修改返回逻辑
  • 可以通过调整rank参数(如限定为"species")来提升查询精准度

内容的提问来源于stack exchange,提问作者close2zero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 12:42:13