Thank you, that really worked. Actually received an even shorter version:

rowSums((t(apply(D > 0, 1, cumsum)) <= 3) * D)



2013/5/21 Xiao He <praguewaterme...@gmail.com>

> Oops, a couple of missing brackets in the previous reply:
>
>
> foo<-function(x){
>   temp=x[x>0]
>   if(length(temp)>=3) sum(temp[1:3])
>   else sum(temp)
> }      #<----This was missing in the previous post
>
>
> set.seed(2)
> mat<-matrix(sample(0:4, 25, replace=T, prob=c(1/2,rep(1/8,4))), ncol=5)
>  #add a right parenthesis.
> mat
>
> On Tue, May 21, 2013 at 3:47 AM, Xiao He <praguewaterme...@gmail.com>wrote:
>
>> Does this work? Probably not the fastest, but I think it does the job.
>>
>> foo<-function(x){
>>   temp=x[x>0]
>>   if(length(temp)>=3) sum(temp[1:3])
>>   else sum(temp)
>>
>> set.seed(2)
>> mat<-matrix(sample(0:4, 25, replace=T, prob=c(1/2,rep(1/8,4)), ncol=5)
>> mat
>>
>> #     [,1] [,2] [,3] [,4] [,5]
>> #[1,]    0    1    2    4    3
>> #[2,]    3    0    0    1    0
>> #[3,]    2    4    4    0    4
>> #[4,]    0    0    0    0    0
>> #[5,]    1    2    0    0    0
>>
>>
>> apply(mat, 1, foo)    #Apply the function to each row of the matrix
>> #[1]  7  4 10  0  3
>>
>>
>>
>> On Tue, May 21, 2013 at 2:16 AM, José Verhoeven <j...@memo2.nl> wrote:
>>
>>> Hi there,
>>> I've got this matrix D with, say 10 rows and 20 columns. For each row I
>>> want
>>> to sum the first 3 non zero elements and put them in a vector z.
>>>
>>> So if the first row D[1,] is
>>> 0 3 5 0 8 9 3 2 4 0
>>>
>>> then I want z
>>> z<-D[1,2]+D[1,3]+D[1,5]
>>>
>>> But if there are less than 3 non zero elements, those should be summed.
>>> If
>>> there are no non zero elements, the result must be zero.
>>>
>>> So if the first row D[1,] is
>>> 0 0 3 0 1 0 0 0 0 0
>>>
>>> then I want z
>>> z<-D[1,3]+D[1,5]
>>>
>>> Hope someone can help me out!
>>>
>>>         [[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.
>>>
>>
>>
>

        [[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.

Reply via email to