aboutsummaryrefslogtreecommitdiff
path: root/R/ilr.R
diff options
context:
space:
mode:
authorjranke <jranke@edb9625f-4e0d-4859-8d74-9fd3b1da38cb>2012-04-23 23:08:19 +0000
committerjranke <jranke@edb9625f-4e0d-4859-8d74-9fd3b1da38cb>2012-04-23 23:08:19 +0000
commitea197b16fe5c582dd2a72e81d25c1ebbd5d527b3 (patch)
tree4bf946247020b9b29d8b06d3487af575d5bf4060 /R/ilr.R
parente3162e617bc268d9de92640311e2fbe650aa636a (diff)
- Fixed a couple of things
- Now the eigenvalue based solutions are nicely consistent with the deSolve solutions, if enough output times are specified (100, sometimes more are needed, see test.R) - Workaround for invilr not to produce NaN values so often - Still a lot to do (see TODO) git-svn-id: svn+ssh://svn.r-forge.r-project.org/svnroot/kinfit/pkg/mkin@30 edb9625f-4e0d-4859-8d74-9fd3b1da38cb
Diffstat (limited to 'R/ilr.R')
-rw-r--r--R/ilr.R7
1 files changed, 7 insertions, 0 deletions
diff --git a/R/ilr.R b/R/ilr.R
index b53f868..389653e 100644
--- a/R/ilr.R
+++ b/R/ilr.R
@@ -40,5 +40,12 @@ invilr<-function(x) {
for (i in 1:D) {
z[i] <- exp(y[i])/sum(exp(y))
}
+
+ # Work around a numerical problem with NaN values returned by the above
+ # Only works if there is only one NaN value: replace it with 1
+ # if the sum of the other components is < 1e-10
+ if (sum(is.na(z)) == 1 && sum(z[!is.na(z)]) < 1e-10)
+ z = ifelse(is.na(z), 1, z)
+
return(z)
}

Contact - Imprint