gpt4 book ai didi

r - 在 mapply 中将函数名称作为参数传递?

转载 作者:行者123 更新时间:2023-12-04 10:55:17 24 4
gpt4 key购买 nike

我想在 mapply 中传递一个函数名作为参数:

f2 <- function(a, b) a + b^2
f <- function(a, b, func) func(a, b)
f(1, 3, f2) ## returns 10
mapply(f2, 1:2, 3) ## returns [1] 10 11
mapply(function(a, b) f(a, b, f2), 1:2, 3) ## returns [1] 10 11
mapply(f, 1:2, 3, f2) ## fails

最后 mapply调用产生错误
Error in dots[[3L]][[1L]] : object of type 'closure' is not subsettable
有没有办法做到这一点?

最佳答案

mapply假设您要遍历在第一个函数之后传递的所有向量。但是您想使用与 f2 相同的值对于每次迭代。您可以使用 MoreArgs= 来做到这一点。范围

mapply(f,  1:2,  3,  MoreArgs=list(func=f2))

你对 3 没有同样的问题,因为 R 将执行向量回收将 3 扩展为 c(3,3)匹配与 c(1,2) 相同的长度. R 中的函数没有相同的隐式回收行为。但是如果你想让值始终保持不变,最好把它放在 MoreArgs 中。范围

关于r - 在 mapply 中将函数名称作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58561170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com