【发布时间】:2015-10-19 14:12:01
【问题描述】:
考虑下面的代码
i = 3
j = i
i = 4 # j != i
但是,我想要的是
i = 3
f <- function(x, j=i)
x * j
i = 4
f(4) # 16, but i want it to be 12
如果您想知道我为什么要这样做,您可以考虑这段代码 - 该应用程序是一个多次递减模型。转移矩阵的对角线是该行中其他减量的总和。我想定义我需要的减量,而不是使用这些减量计算其他函数。在这种情况下,我只需要 uxt01 和 uxt10,我想从中生成函数 uxt00 和 uxt11。我想要一些可以扩展到更高维度的东西。
Qxt <- matrix(c(uxt00=function(t=0,x=0) 0,
uxt01=function(t=0,x=0) 0.05,
uxt10=function(t=0,x=0) 0.07
uxt11=function(t=0,x=0) 0), 2, 2, byrow=TRUE)
Qxt.diag <- function(Qxt) {
ndecrements <- length(Qxt[1,])
for(index in seq(1, N, N+1)) { # 1, 4
Qxt[[index]] <- function(t=0, x=0, i=index, N=ndecrements) {
row <- ceiling(index/ndecr)
row.decrements <- seq( (row - 1)*N + 1, (row)*N)
other.decrements <- row.decrements[which(row.decrements != i]
-sum(unlist(lapply(Qxt.fns[[other.decrements]],
function(f) f(t,x))))
}
}
Qxt.fns
}
【问题讨论】:
-
你能更全面地解释你为什么要这样做吗?
-
这与深拷贝或浅拷贝无关。