[R] Adding a migration element to a deterministic spatial model
Aimee Jones
alj27 at hoyamail.georgetown.edu
Sun Jan 8 09:14:20 CET 2012
Hi all,
I've been working with a friend's model that is a spatial model
consisting of 4 patches. She uses the code found below to add
migration between the patches for the three species of concern. When I
run a script incorporating this code, all four patches run
independently without migration occuring. When I type m1[1,2] into the
workspace to see if it will return a figure, it returns, error, object
m1 not found. However, if I type the code below directly into the
workspace, it finds and returns m1[1,2] (or any other value). I have
tried to find other examples of code that add a migration element to a
spatial model but have not had any success. I need help figuring out
why m#[i,j] consistently returns a 0 value (or at least appears to)
despite the code instructing R to return different values under set
circumstances.
thanks for any help you are able to give,
yours sincerely,
Aimee
with(as.list(c(y,p)),
{
dydt <- rep(0,NP*16)
# Initialize m1,m2,m3
m1 <- matrix(0,NP,NP)
m2 <- matrix(0,NP,NP)
m3 <- matrix(0,NP,NP)
# Only nearest neighbors have nonzero travel rates between each other
for (i in 1:NP)
{
for (j in 1:NP)
{
if ((i%%sqrt(NP)) == 0 & i!=j)
{
if (j == i+sqrt(NP) | j == i-1 | j == i-sqrt(NP))
{
m1[j,i] <- 0.1
m1[i,j] <- 0.1
m2[j,i] <- 0.25
m2[i,j] <- 0.25
m3[j,i] <- 0.1
m3[i,j] <- 0.1
}
}
if (i%%sqrt(NP) == 1)
{
if (j == i+sqrt(NP) | j == i+1 | j == i-sqrt(NP))
{
m1[j,i] <- 0.1
m1[i,j] <- 0.1
m2[j,i] <- 0.25
m2[i,j] <- 0.25
m3[j,i] <- 0.1
m3[i,j] <- 0.1
}
}
if (i%%sqrt(NP)!=0 & i%%sqrt(NP)!=1 & i!=j)
{
if (j == i+sqrt(NP) | j == i+1 | j == i-sqrt(NP)| j == i-1)
{
m1[j,i] <- 0.1
m1[i,j] <- 0.1
m2[j,i] <- 0.25
m2[i,j] <- 0.25
m3[j,i] <- 0.1
m3[i,j] <- 0.1
}
}
}
}
# Initialize the summaries of incoming movements to a patch
s <- rep(0,NP*16)
for (i in 1:NP)
{
z <- (i-1)*16
for (k in 3:6)
{
for (j in 1:NP)
{
zz <- (j-1)*16
s[z+k] <- s[z+k] + m1[i,j]*y[zz+k]
}
}
for (k in 7:11)
{
for (j in 1:NP)
{
zz <- (j-1)*16
s[z+k] <- s[z+k] + m2[i,j]*y[zz+k]
}
}
for (k in 13:16)
{
for (j in 1:NP)
{
zz <- (j-1)*16
s[z+k] <- s[z+k] + m3[i,j]*y[zz+k]
}
}
More information about the R-help
mailing list