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

为什么R的purrr::map()会尝试将输出结果转换为函数?

问题解答

错误根源

你为purrr::map()的.f参数传值时写法错误:

  • 你写的.f = test()会让R立即执行test函数,将它的返回值NA(逻辑型变量)传入.f参数
  • 而map()要求.f必须接收函数对象本身,不是函数执行后的返回结果,因此会抛出「无法将逻辑向量转换为函数」的报错。

修正方法

直接传入函数名,去掉函数名后的括号即可:

a <- map(.x = 1:2, .f = test)

运行后会得到预期的包含2个NA的列表结果:

> a
[[1]]
[1] NA

[[2]]
[1] NA

拓展提示

如果你使用的自定义函数需要传入除遍历变量.x之外的固定参数,直接在map()的参数列表末尾追加即可,不需要写在.f的括号中:

# 示例:带额外参数的函数
test2 <- function(x, threshold) {
  if (x > threshold) return(x)
  return(NA)
}

# 固定给threshold传值1的正确写法
a2 <- map(.x = 1:2, .f = test2, threshold = 1)

内容的提问来源于stack exchange,提问作者Christopher Carroll Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 20:57:04