gpt4 book ai didi

R:如何创建函数向量?

转载 作者:行者123 更新时间:2023-12-02 20:00:12 24 4
gpt4 key购买 nike

我想使用两个参数函数“func”创建一个函数向量,例如这个:

func = function(number, coefficient) {  
return(coefficient*number)
}

这是我创建函数向量的方法:

vector_of_functions = NULL  
for (i in 1:4) {
vector_of_functions = c(vector_of_functions,
function(number) func(number=number, coefficient=i))
}

我的问题是组成向量的所有函数都是相同的,即使它们是通过循环使用不同的 i 创建的。看起来它们是使用 i 的最后一个值(这里是一个全局变量)来计算的。

有人有想法吗?

谢谢

最佳答案

您可以通过在其自己的本地环境中重新定义 i 来将 i 的值“附加”到每个函数(由函数 local方便地创建)代码 > R 中)。带有“附加”数据的结果函数称为“闭包”。

> vector_of_functions = NULL  
> for (i in 1:4) {
+ vector_of_functions = c(vector_of_functions,
+ local({i <- i;function(number) func(number=number, coefficient=i)}))
+ }
> vector_of_functions[[1]](1)
[1] 1
> vector_of_functions[[2]](1)
[1] 2
> vector_of_functions[[3]](1)
[1] 3
> vector_of_functions[[4]](1)
[1] 4

关于R:如何创建函数向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3985537/

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