> -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Marcio Resende > Sent: Wednesday, November 25, 2009 12:27 PM > To: r-help@r-project.org > Subject: [R] How to sum only a few elements in a line > > > Hello, > > I have a matrix with the numbers 0,1 and 9 > I would like to write a function that could sum each line > skiping everytime > a number 9 appears > for example > [0 1 0 1 1 9 1] > the sum would be 4. > However I cannot replace 9 by 0 otherwise after the sum is > done I wouldn´t > be able to distiguish which ones were real zeros and which > ones were nines > replaced by zero just to sum.
One of the nice things about the S language is that arguments functions are not altered by the function. When the function appears to alter an argument it is really altering a copy of it. Thus you can write a function like f <- function(matrix) { matrix[matrix==9] <- 0 rowSums(matrix) } and use it as > myMatrix <- rbind(c(0,1,0,1,1,9,1), c(9,9,9,9,9,17,9)) > f(myMatrix) [1] 4 17 > myMatrix # not altered by running f over it [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 0 1 0 1 1 9 1 [2,] 9 9 9 9 9 17 9 By the way, it would help if you wrote your example data as an S expression, e.g., rbind(c(...),c(...)), and not as an expression in some other language, "[ 1 1 9 ]". Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > Thank you very much > > -- > View this message in context: > http://old.nabble.com/How-to-sum-only-a-few-elements-in-a-line -tp26519740p26519740.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.