【问题标题】:Pass strings from a column into a function by using a loop - R使用循环将字符串从列传递到函数 - R
【发布时间】:2021-02-20 23:25:10
【问题描述】:

我有一个包含约 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 循环遍历并提取每个物种的威胁?

谢谢。

【问题讨论】:

    标签: r string loops


    【解决方案1】:

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

    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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 2023-03-17
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多