Fixed global variable handling
This commit is contained in:
parent
46a9249e5a
commit
de9683dd7d
5 changed files with 33 additions and 33 deletions
|
|
@ -1,8 +1,7 @@
|
||||||
clearGlobalVars <- function() {
|
clearGlobalVars <- function() {
|
||||||
# COUNTS <- SUMCOUNTS <- PARTITION <- POP_LOGML <- vector() # placeholders
|
COUNTS <- vector()
|
||||||
COUNTS <<- vector()
|
SUMCOUNTS <- vector()
|
||||||
SUMCOUNTS <<- vector()
|
PARTITION <- vector()
|
||||||
PARTITION <<- vector()
|
POP_LOGML <- vector()
|
||||||
POP_LOGML <<- vector()
|
LOGDIFF <- vector()
|
||||||
LOGDIFF <<- vector()
|
|
||||||
}
|
}
|
||||||
1
R/globals.R
Normal file
1
R/globals.R
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
utils::globalVariables(c("PARTITION", "COUNTS", "SUMCOUNTS", "LOGDIFF", "POP_LOGML"))
|
||||||
|
|
@ -41,7 +41,7 @@ poistaLiianPienet <- function (npops, rowsFromInd, alaraja,
|
||||||
PARTITION[yksilot] == n
|
PARTITION[yksilot] == n
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: add COUNTS, SUMCOUNTS and PARTITION to return or use <<-
|
# TODO: add COUNTS, SUMCOUNTS and PARTITION to return or use <-
|
||||||
COUNTS[, , miniPops] <- NA
|
COUNTS[, , miniPops] <- NA
|
||||||
SUMCOUNTS[miniPops, ] <- NA
|
SUMCOUNTS[miniPops, ] <- NA
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,13 @@ poistaTyhjatPopulaatiot <- function(npops) {
|
||||||
# % Poistaa tyhjentyneet populaatiot COUNTS:ista ja
|
# % Poistaa tyhjentyneet populaatiot COUNTS:ista ja
|
||||||
# % SUMCOUNTS:ista. P<>ivitt<74><74> npops:in ja PARTITION:in.
|
# % SUMCOUNTS:ista. P<>ivitt<74><74> npops:in ja PARTITION:in.
|
||||||
notEmpty <- find(any(SUMCOUNTS, 2))
|
notEmpty <- find(any(SUMCOUNTS, 2))
|
||||||
COUNTS <<- COUNTS[, , notEmpty]
|
COUNTS <- COUNTS[, , notEmpty]
|
||||||
SUMCOUNTS <<- SUMCOUNTS[notEmpty, ]
|
SUMCOUNTS <- SUMCOUNTS[notEmpty, ]
|
||||||
LOGDIFF <<- LOGDIFF[, notEmpty]
|
LOGDIFF <- LOGDIFF[, notEmpty]
|
||||||
|
|
||||||
for (n in 1:length(notEmpty)) {
|
for (n in 1:length(notEmpty)) {
|
||||||
apu <- find(PARTITION == notEmpty(n))
|
apu <- find(PARTITION == notEmpty(n))
|
||||||
PARTITION(apu) <<- n
|
PARTITION[apu] <- n
|
||||||
}
|
}
|
||||||
npops <- length(notEmpty)
|
npops <- length(notEmpty)
|
||||||
return(npops)
|
return(npops)
|
||||||
|
|
|
||||||
|
|
@ -2,21 +2,21 @@ updateGlobalVariables <- function(ind, i2, diffInCounts, adjprior, priorTerm) {
|
||||||
# % Suorittaa globaalien muuttujien muutokset, kun yksil<69> ind
|
# % Suorittaa globaalien muuttujien muutokset, kun yksil<69> ind
|
||||||
# % on siirret<65><74>n koriin i2.
|
# % on siirret<65><74>n koriin i2.
|
||||||
|
|
||||||
i1 <- PARTITION(ind)
|
i1 <- PARTITION[ind]
|
||||||
PARTITION(ind) <<- i2
|
PARTITION[ind] <- i2
|
||||||
|
|
||||||
COUNTS[, , i1] <<- COUNTS[, , i1] - diffInCounts
|
COUNTS[, , i1] <- COUNTS[, , i1] - diffInCounts
|
||||||
COUNTS[, , i2] <<- COUNTS[, , i2] + diffInCounts
|
COUNTS[, , i2] <- COUNTS[, , i2] + diffInCounts
|
||||||
SUMCOUNTS[i1, ] <<- SUMCOUNTS[i1, ] - sum[diffInCounts]
|
SUMCOUNTS[i1, ] <- SUMCOUNTS[i1, ] - sum[diffInCounts]
|
||||||
SUMCOUNTS[i2, ] <<- SUMCOUNTS[i2, ] + sum[diffInCounts]
|
SUMCOUNTS[i2, ] <- SUMCOUNTS[i2, ] + sum[diffInCounts]
|
||||||
|
|
||||||
POP_LOGML[c(i1, i2)] <<- computePopulationLogml(
|
POP_LOGML[c(i1, i2)] <- computePopulationLogml(
|
||||||
c(i1, i2), adjprior, priorTerm
|
c(i1, i2), adjprior, priorTerm
|
||||||
)
|
)
|
||||||
|
|
||||||
LOGDIFF[, c(i1, i2)] <<- -Inf
|
LOGDIFF[, c(i1, i2)] <- -Inf
|
||||||
inx <- c(find(PARTITION == i1), find(PARTITION==i2))
|
inx <- c(find(PARTITION == i1), find(PARTITION==i2))
|
||||||
LOGDIFF[inx, ] <<- -Inf
|
LOGDIFF[inx, ] <- -Inf
|
||||||
}
|
}
|
||||||
|
|
||||||
updateGlobalVariables2 <- function(i1, i2, diffInCounts, adjprior, priorTerm) {
|
updateGlobalVariables2 <- function(i1, i2, diffInCounts, adjprior, priorTerm) {
|
||||||
|
|
@ -24,12 +24,12 @@ updateGlobalVariables2 <- function(i1, i2, diffInCounts, adjprior, priorTerm) {
|
||||||
# % korissa i1 olevat yksil<69>t siirret<65><74>n koriin i2.
|
# % korissa i1 olevat yksil<69>t siirret<65><74>n koriin i2.
|
||||||
|
|
||||||
inds <- find(PARTITION == i1)
|
inds <- find(PARTITION == i1)
|
||||||
PARTITION(inds) <<- i2
|
PARTITION[inds] <- i2
|
||||||
|
|
||||||
COUNTS[, , i1] <<- COUNTS[, , i1] - diffInCounts
|
COUNTS[, , i1] <- COUNTS[, , i1] - diffInCounts
|
||||||
COUNTS[, , i2] <<- COUNTS[, , i2] + diffInCounts
|
COUNTS[, , i2] <- COUNTS[, , i2] + diffInCounts
|
||||||
SUMCOUNTS[i1, ] <<- SUMCOUNTS[i1, ] - sum[diffInCounts]
|
SUMCOUNTS[i1, ] <- SUMCOUNTS[i1, ] - sum[diffInCounts]
|
||||||
SUMCOUNTS[i2, ] <<- SUMCOUNTS[i2, ] + sum[diffInCounts]
|
SUMCOUNTS[i2, ] <- SUMCOUNTS[i2, ] + sum[diffInCounts]
|
||||||
|
|
||||||
POP_LOGML[i1] <- 0
|
POP_LOGML[i1] <- 0
|
||||||
POP_LOGML[i2] <- computePopulationLogml(i2, adjprior, priorTerm)
|
POP_LOGML[i2] <- computePopulationLogml(i2, adjprior, priorTerm)
|
||||||
|
|
@ -47,18 +47,18 @@ updateGlobalVariables3 <- function(
|
||||||
# % koriin.
|
# % koriin.
|
||||||
|
|
||||||
i1 <- PARTITION[muuttuvat(1)]
|
i1 <- PARTITION[muuttuvat(1)]
|
||||||
PARTITION[muuttuvat] <<- i2
|
PARTITION[muuttuvat] <- i2
|
||||||
|
|
||||||
COUNTS[, , i1] <<- COUNTS[, , i1] - diffInCounts
|
COUNTS[, , i1] <- COUNTS[, , i1] - diffInCounts
|
||||||
COUNTS[, , i2] <<- COUNTS[, , i2] + diffInCounts
|
COUNTS[, , i2] <- COUNTS[, , i2] + diffInCounts
|
||||||
SUMCOUNTS[i1, ] <<- SUMCOUNTS[i1, ] - sum[diffInCounts]
|
SUMCOUNTS[i1, ] <- SUMCOUNTS[i1, ] - sum[diffInCounts]
|
||||||
SUMCOUNTS[i2, ] <<- SUMCOUNTS[i2, ] + sum[diffInCounts]
|
SUMCOUNTS[i2, ] <- SUMCOUNTS[i2, ] + sum[diffInCounts]
|
||||||
|
|
||||||
POP_LOGML[c(i1, i2)] <<- computePopulationLogml(
|
POP_LOGML[c(i1, i2)] <- computePopulationLogml(
|
||||||
c(i1, i2), adjprior, priorTerm
|
c(i1, i2), adjprior, priorTerm
|
||||||
)
|
)
|
||||||
|
|
||||||
LOGDIFF[, c(i1, i2)] <<- -Inf
|
LOGDIFF[, c(i1, i2)] <- -Inf
|
||||||
inx <- c(find(PARTITION == i1), find(PARTITION == i2))
|
inx <- c(find(PARTITION == i1), find(PARTITION == i2))
|
||||||
LOGDIFF[inx, ] <<- -Inf
|
LOGDIFF[inx, ] <- -Inf
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue