This was actually discussed about a week and a half ago with many good solutions offered, but I think the most idiomatic would be something like this:
apply(dataset, 1, function(x) mean(x[x>0])) The reasons I like it: i) It uses the apply function to do the same operation row-wise (that's what the "1" does) to all elements of your data set -- since this is side-effect free (as a good functional language should be) it makes for easy parallelization if you move to "big data" ii) It uses an anonymous function (the "function ... " bit) which are first class objects in R and can be passed as arguments to other functions (here apply()) iii) It uses logical subscripting to pick out the values greater than zero -- I think the subscripting behavior is the very best bit of R Best, Michael On Mon, May 14, 2012 at 12:32 PM, Andrea Sica <aerdna.s...@gmail.com> wrote: > Dear all, > > I am sure it won't be difficult for you!! > I need to calculate the average among variables for the single units of my > dataset. > But, while doing it, I need to do not consider some values. > To better explain, think like there are two units and three variables: > > V1 V2 V3 > [1] 3 -2 4 > [2] -1 4 1 > > and you want to calculate the average by row, without considering those > negative values: > > => mean(1row) = (3+4)/2 > => mean(2row) = (4+1)/2 > > Could anyone please give me the commands to do that in R? > > Thank you so much > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.