Si consideri il seguente codiceR: copia completa di un argomento di funzione
i = 3
j = i
i = 4 # j != i
Tuttavia, quello che voglio è
i = 3
f <- function(x, j=i)
x * j
i = 4
f(4) # 16, but i want it to be 12
Nel caso in cui vi state chiedendo perché voglio fare questo si potrebbe considerare questo codice - l'applicazione è un modello a decrementi multipli. Le diagonali di una matrice di transizione sono la somma degli altri decrementi in quella riga. Vorrei definire i decrementi di cui ho bisogno piuttosto che calcolare le altre funzioni usando quei decrementi. In questo caso, ho solo bisogno di uxt01 e uxt10 e da questi voglio produrre le funzioni uxt00 e uxt11. Volevo qualcosa che si adattasse alle dimensioni superiori.
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
}
Puoi spiegare in modo più completo perché vuoi farlo? – joran
Questo non ha nulla a che fare con la copia profonda o superficiale. –