diff --git a/R/findExchReact.R b/R/findExchReact.R index 4715a5848ff6b7f132ba645cae1e785cb8e62514..6bfe7ff2e329f81891935e9ca17a7eaf4f74f538 100644 --- a/R/findExchReact.R +++ b/R/findExchReact.R @@ -45,12 +45,24 @@ findExchReact <- function(model) { } # columns with only one entry - oneEntry <- apply(St, 2, function(x) sum(x != 0) == 1) + if(is(St, "Matrix")){ + oneEntry <- colSums(St != 0)==1 + } + else{ + oneEntry <- apply(St, 2, function(x) sum(x != 0) == 1) + } + if (sum(oneEntry) > 0) { # exchange reactions -- with a -1 or 1 - exchangeReact <- apply(St[ , oneEntry, drop = FALSE], 2, function(x) (sum(x == 1) == 1) | (sum(x == -1) == 1)) - + + if(is(St, "Matrix")){ + exchangeReact <- (colSums(St[ , oneEntry, drop = FALSE] == 1) == 1 | colSums(St[ , oneEntry, drop = FALSE]== -1) == 1) + } + else{ + exchangeReact <- apply(St[ , oneEntry, drop = FALSE], 2, function(x) (sum(x == 1) == 1) | (sum(x == -1) == 1)) + } + # vector with the reaction id's of the exchange reactions ex <- c(1 : dim(St)[2])[oneEntry[exchangeReact]]