From 7d3beb97719952314a71781d6bf4f4e054e249f0 Mon Sep 17 00:00:00 2001
From: Claus Jonathan Fritzemeier <clausjonathan.fritzemeier@hhu.de>
Date: Mon, 2 Mar 2015 14:25:15 +0100
Subject: [PATCH] findExchangeReact can now deal with bigger matrices

---
 R/findExchReact.R | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/R/findExchReact.R b/R/findExchReact.R
index 4715a58..6bfe7ff 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]]
 
-- 
GitLab