Right. More precisely the function passed thru the FUN argument must
work on the subsets of X generated internally by tapply(). You can
actually see these subsets by passing the identity function:

  X <- letters[1:10]
  INDEX <- c(rep(1,5),rep(2,5))
  tapply(X, INDEX, FUN=identity)
  # $`1`
  # [1] "a" "b" "c" "d" "e"
  #
  # $`2`
  # [1] "f" "g" "h" "i" "j"

Doing this shows you how tapply() splits the vector-like object X into
a list of subsets. If you replace the identity function with a function
that cannot be applied to these subsets, then you get an error:

  tapply(X, INDEX, FUN=sum)
  # Error in FUN(X[[i]], ...) : invalid 'type' (character) of argument

As you can see, here we get an error even though X is an atomic vector.

H.


On 02/14/2017 05:41 PM, Richard M. Heiberger wrote:
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.4...@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 <hpa...@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.gal...@gmail.com |
Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) |
www.r-statistics.com (English)

----------------------------------------------------------------------------------------------

        [[alternative HTML version deleted]]

______________________________________________
R-help@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: hpa...@fredhutch.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319

______________________________________________
R-help@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@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: hpa...@fredhutch.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319

______________________________________________
R-help@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.

Reply via email to