使用for循环生成数学函数
例如,我想使用for循环(在R中)生成数学函数,这样我就可以通过f[3]调用I=3的函数 我最初尝试的是:使用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} } 为了解决这个问题,您可以创建一个
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}
}
为了解决这个问题,您可以创建一个新的环境来保存每次循环中的局部变量,并将此环境分配给函数,如下所示:
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