为什么 R 的 purrr::map() 试图将我的输出转换为函数?

Why is R's purrr::map() trying to convert my output to a function?

我敢肯定对此有一个简单的解释,但是今天早上脑雾很大,我不知所措。我正在尝试使用 purrr::map() 调用有时 return 为 NA 的函数,但我不断收到错误消息:

“错误:无法将逻辑向量转换为函数”

这是一个 return 错误的简化案例:

library(tidyverse)

test <- function(x){
  return(NA)
}

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

R 将 NA 归类为逻辑变量,但我不明白为什么当我 return 时 map() 试图将此变量转换为函数。我在这里做错了什么?

您需要使用

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

没有括号。 .f 参数必须是一个函数——您不想在那里调用您的函数。

请注意 class(test) 是“函数”,但 class(test()) 不是——在本例中它是“逻辑”。引用函数本身时,不要使用括号。否则你输入的内容与

相同
# these are the same
a <- map(.x = 1:2, .f = test())
a <- map(.x = 1:2, .f = NA)