为什么 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)
我敢肯定对此有一个简单的解释,但是今天早上脑雾很大,我不知所措。我正在尝试使用 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)