首页 > 解决方案 > 使用循环将字符串从列传递到函数 - R

问题描述

我有一个包含约 10,000 个物种的数据集。对于数据集中的每个物种,我想查询 IUCN 数据库中每个物种面临的威胁。我可以使用 rredlist 包中的 rl_threats 函数一次处理一个物种。下面是该函数的示例,此示例提取 Fratercula arctica 面临的威胁并将它们分配给对象 test1(密钥是一个字符串,用作使用保持不变的 IUCN API 的密码,parse 应该是 TRUE 但不那么重要)。

    test1<-rl_threats(name="Fratercula arctica", 
                  key = '1234',
                  parse = TRUE)

我想在我的数据集中获得所有 10,000 个物种的威胁。我的想法是使用一个循环,将我的数据集中的名称传递到 rl_threats 命令中的 name="" 字段。这是我试图构建的一个基本循环,但我遇到了很多错误:

   for (i in 1:df$scientific_name) {
    rl_threats(name=i, 
             key = '1234',
             parse = TRUE)
    } 

我如何将科学名称列中的物种名称传递到 rl_threats 函数中,以便 R 循环遍历并拉动每个物种的威胁?

谢谢你。

标签: rstringloops

解决方案


您可以创建一个列表来存储输出。

result <- vector('list', length(df$scientific_name))
for (i in df$scientific_name) {
  result[[i]] <- rl_threats(name=i, key = '1234', parse = TRUE)
}

您还可以使用lapply

result <- lapply(df$scientific_name, function(x) rl_threats(name=x, key = '1234', parse = TRUE))

推荐阅读