[R] Is a list an atomic object? (or is there an issue with the help page of ?tapply ?)

Richard M. Heiberger rmh at temple.edu
Wed Feb 15 02:41:47 CET 2017


The problem with Bert's second example is that sum doesn't work on a list.
The tapply worked correctly.

> unlist(l[1:5])
[1] 1 2 3 4 5

> sum(l[1:5])
Error in sum(l[1:5]) : invalid 'type' (list) of argument



On Tue, Feb 14, 2017 at 8:28 PM, Bert Gunter <bgunter.4567 at gmail.com> wrote:
> Hervé:
>
> Kindly explain this, then:
>
>> l <- as.list(1:10)
>> is.atomic(l) # FALSE
> [1] FALSE
>> index <- c(rep(1,5),rep(2,5))
>>
>>
>> tapply(l,index,unlist)
> $`1`
> [1] 1 2 3 4 5
>
> $`2`
> [1]  6  7  8  9 10
>
>>
>> ## But
>>
>> tapply(l,index, sum)
> Error in FUN(X[[i]], ...) : invalid 'type' (list) of argument
>
> Cheers,
> Bert
> Bert Gunter
>
> "The trouble with having an open mind is that people keep coming along
> and sticking things into it."
> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>
>
> On Tue, Feb 14, 2017 at 5:10 PM, Hervé Pagès <hpages at fredhutch.org> wrote:
>> Hi,
>>
>> tapply() will work on any object 'X' that has a length and supports
>> single-bracket subsetting. These objects are sometimes called
>> "vector-like" objects. Atomic vectors, lists, S4 objects with a "length"
>> and "[" method, etc... are examples of "vector-like" objects.
>>
>> So instead of saying
>>
>>   X: an atomic object, typically a vector.
>>
>> I think it would be more accurate if the man page was saying something
>> like
>>
>>   X: a vector-like object that supports subsetting with `[`, typically
>>      an atomic vector.
>>
>> H.
>>
>> On 02/04/2017 04:17 AM, Tal Galili wrote:
>>>
>>> In the help page of ?tapply it says that the first argument (X) is "an
>>> atomic object, typically a vector."
>>>
>>> However, tapply seems to be able to handle list objects. For example:
>>>
>>> ###################
>>>
>>> l <- as.list(1:10)
>>> is.atomic(l) # FALSE
>>> index <- c(rep(1,5),rep(2,5))
>>> tapply(l,index,unlist)
>>>
>>>> tapply(l,index,unlist)
>>>
>>> $`1`
>>> [1] 1 2 3 4 5
>>>
>>> $`2`
>>> [1]  6  7  8  9 10
>>>
>>>
>>> ###################
>>>
>>> Hence, does it mean a list an atomic object? (which I thought it wasn't)
>>> or
>>> is the help for tapply needs updating?
>>> (or some third option I'm missing?)
>>>
>>> Thanks.
>>>
>>>
>>>
>>>
>>>
>>> ----------------Contact
>>> Details:-------------------------------------------------------
>>> Contact me: Tal.Galili at gmail.com |
>>> Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) |
>>> www.r-statistics.com (English)
>>>
>>> ----------------------------------------------------------------------------------------------
>>>
>>>         [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> 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.
>>>
>>
>> --
>> Hervé Pagès
>>
>> Program in Computational Biology
>> Division of Public Health Sciences
>> Fred Hutchinson Cancer Research Center
>> 1100 Fairview Ave. N, M1-B514
>> P.O. Box 19024
>> Seattle, WA 98109-1024
>>
>> E-mail: hpages at fredhutch.org
>> Phone:  (206) 667-5791
>> Fax:    (206) 667-1319
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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 at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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