使用for循环生成数学函数

使用for循环生成数学函数,r,for-loop,R,For Loop,例如,我想使用for循环(在R中)生成数学函数,这样我就可以通过f[3]调用I=3的函数 我最初尝试的是: f<-NULL for (i in 1:100){ f[i]<-function(x){x*i} } fsizesize这里有两个问题。首先,您需要使用列表而不是向量。第二个问题更为微妙。如果你这么做的话 f<-list() for (i in 1:100){ f[[i]]<-function(x){x*i} } 为了解决这个问题,您可以创建一个

例如,我想使用for循环(在R中)生成数学函数,这样我就可以通过f[3]调用I=3的函数

我最初尝试的是:

f<-NULL
for (i in 1:100){
    f[i]<-function(x){x*i}
}

f
size
size这里有两个问题。首先,您需要使用列表而不是向量。第二个问题更为微妙。如果你这么做的话

f<-list()
for (i in 1:100){
    f[[i]]<-function(x){x*i}
}
为了解决这个问题,您可以创建一个新的环境来保存每次循环中的局部变量,并将此环境分配给函数,如下所示:

f<-list()
for (i in 1:100){
    e<-new.env()
    e$i<-i
    f[[i]]<-function(x){x*i}
    environment(f[[i]])<-e
}

这里有两个问题。首先,您需要使用列表而不是向量。第二个问题更为微妙。如果你这么做的话

f<-list()
for (i in 1:100){
    f[[i]]<-function(x){x*i}
}
为了解决这个问题,您可以创建一个新的环境来保存每次循环中的局部变量,并将此环境分配给函数,如下所示:

f<-list()
for (i in 1:100){
    e<-new.env()
    e$i<-i
    f[[i]]<-function(x){x*i}
    environment(f[[i]])<-e
}

我认为您需要使用…
force
函数
force
强制执行
索引评估(I),您还可以用
lappy
替换
for
循环

size <- 5
f <- function(ind) { force(ind); function(x) x * ind }
fmult <- lapply(seq_len(size), function(i) f(i))
fmult[[3]](4)
## [1] 12

size我认为您需要
force
使用…
force
函数对索引进行评估(I),您还可以用
lappy
替换
for
循环

size <- 5
f <- function(ind) { force(ind); function(x) x * ind }
fmult <- lapply(seq_len(size), function(i) f(i))
fmult[[3]](4)
## [1] 12

size我需要将每个f[[I]]乘以另一个函数hI需要将每个f[[I]]乘以另一个函数h