On 10/04/20 10:59 am, petr smirnov wrote:

I am having trouble parsing the documentation for sapply and vapply,
and I cannot understand if it explains the different behaviour of
USE.NAMES between the two.

I noticed the following different behaviour between the two functions:

sapply(c("1"=1, "2"=2, "3"=3), function(x) {r <- list(x); r}, USE.NAMES=FALSE)
$`1`
[1] 1

$`2`
[1] 2

$`3`
[1] 3

vapply(c("1"=1, "2"=2, "3"=3), function(x) { r <- list(x); r}, 
FUN.VALUE=list(1), USE.NAMES=FALSE)
[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

In the sapply case, the names of the input vector are retained. In the
vapply case, they are dropped. Note that this is not true when
USE.NAMES=TRUE:

vapply(c("1"=1, "2"=2, "3"=3), function(x) { r <- list(x); r}, 
FUN.VALUE=list(1), USE.NAMES=TRUE)
$`1`
[1] 1

$`2`
[1] 2

$`3`
[1] 3

The manual page explains this for the names of the result of vapply:

The (Dim)names of the array value are taken from the FUN.VALUE if it
is named, otherwise from the result of the first function call. Column
names of the matrix or more generally the names of the last dimension
of the array value or names of the vector value are set from X as in
sapply.


If this explains the behaviour, could someone break it down for me and
help me understand the reasoning?
Otherwise, is this different behaviour intentional? Should it be
documented more clearly?

IMHO there is an error in the documentation here. Clearly USE.NAMES has a different impact on vapply() than it has on sapply() and the documentation does not indicate this, in fact quite the opposite.

It might be appropriate to submit a bug report (see
https://www.r-project.org/bugs.html) but it's probably not worth the hassle. It's a pretty minor error.

cheers,

Rolf Turner

--
Honorary Research Fellow
Department of Statistics
University of Auckland
Phone: +64-9-373-7599 ext. 88276

______________________________________________
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