[R] How to sum only a few elements in a line
William Dunlap
wdunlap at tibco.com
Wed Nov 25 21:45:44 CET 2009
> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Marcio Resende
> Sent: Wednesday, November 25, 2009 12:27 PM
> To: r-help at 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 at 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.
>
More information about the R-help
mailing list