[R] question

R. Michael Weylandt michael.weylandt at gmail.com
Wed Feb 15 13:20:38 CET 2012


Blah! Forget that first one -- the second one should be fine. (or at
least, I don't see a problem with it immediately)

 sapply(split(GS, rownames(GS)), function(x) if(is.matrix(x)) colSums(x) else x)

Michael

On Wed, Feb 15, 2012 at 7:19 AM, R. Michael Weylandt
<michael.weylandt at gmail.com> wrote:
> Sorry about that -- forgot the case where you might only have a
> certain entry once: try this,
>
> sapply(split(GS, rownames(GS)), function(x) colSums(as.matrix(x)))
>
> or
>
> sapply(split(GS, rownames(GS)), function(x) if(is.matrix(x)) colSums(x) else x)
>
> I'm not sure if there's a way to force split to give you matrix
> elements back but it would be nice.
>
> Michael
>
> PS -- It's nice to cc the list on follow up questions as well so
> others have a chance to answer and you get a quicker reply (since
> there are R-helpers in most every timezone, many of whom know much
> more R-fu than me.)
>
> On Wed, Feb 15, 2012 at 4:46 AM, Soheila Khodakarim
> <lkhodakarim at gmail.com> wrote:
>> Hi,
>>
>> thanks for your guid.
>> But when I used it I saw this error
>>
>> sapply(split(GS,rownames(GS)), colSums)
>> Error in FUN(X[[1L]], ...) :
>>   'x' must be an array of at least two dimensions
>>
>> Is there any command to do split but keep type of data(Matrix)?
>>
>> Regards,
>> Soheila
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> On Tue, Feb 14, 2012 at 1:12 PM, R. Michael Weylandt
>> <michael.weylandt at gmail.com> wrote:
>>>
>>> Perhaps something (untested) like
>>>
>>> sapply(split(x, rownames(x)), colSums)
>>>
>>> Next time it's suggested you use dput() to send your data.
>>>
>>> Michael
>>>
>>> On Tue, Feb 14, 2012 at 7:08 AM, Soheila Khodakarim
>>> <lkhodakarim at gmail.com> wrote:
>>> > I have this matrix in R,
>>> >
>>> >
>>> >   s1 s2 s3 s4
>>> > g1  1  0  0  0
>>> > g1  0  1  0  0
>>> > g1  0  0  1  0
>>> > g2  1  0  0  0
>>> > g2  0  1  0  0
>>> > g3  1  0  0  0
>>> > g4  0  0  1  0
>>> > g4  1  0  0  0
>>> > g4  0  1  0  0
>>> > g4  0  0  0  1
>>> >
>>> >
>>> > I want to split this matrix based on its rows then sum based on columns,
>>> > finally I want to make this matrix:
>>> >
>>> >   s1 s2 s3 s4
>>> > g1  1  1  1  0
>>> > g2  1  1  0  0
>>> > g3  1  0  0  0
>>> > g4  1  1  1  1
>>> >
>>> > I will appreciate if you guide me.
>>> >
>>> > Regards,
>>> > Soheila
>>> >
>>> >        [[alternative HTML version deleted]]
>>> >
>>> > ______________________________________________
>>> > 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