r - 使用循环将字符串从列传递到函数 - 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 循环遍历并拉动每个物种的威胁?
谢谢你。
解决方案
您可以创建一个列表来存储输出。
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))
推荐阅读
- javascript - $.getScript 返回什么,它对作用域有什么作用?
- matlab - 在 matlab 中使用 if..else 语句分割绘图
- python - numpy 的 log1p() 的倒数是什么?
- winapi - 当外部窗口移动到另一个桌面时挂钩
- aws-lambda - 在另一个应用程序使用 AWS Lambda 函数时更新它
- google-app-engine - 如何从应用引擎或 kubernetes 平台使用 gcloud 运行时配置?
- php - SQL 查询不会导致填充表
- qlikview - 显示昨天也有订单的客户订单
- apache-nifi - 包含破折号的 json 无法使用 Avro 模式
- mysql - 将记录展平到 MySQL 中的列中