Skip to content
Prev 17061 / 21318 Next

[Bioc-devel] sapply and vapply

Dear all, 

I have a quick question regarding the usage of vapply and sapply. The former is recommended to insure that the output is always a vector of a specific type. For example:
x           y 
  "integer" "character"
$x
[1] "integer"

$y
[1] "POSIXct" "POSIXt"
Error in vapply(df2, class, character(1)) : values must be length 1,
 but FUN(X[[2]]) result is length 2

There are cases, however, were FUN ensures that the output will be of length 1 and of a expected type. For example

- sapply(X, all) - all() always returns logical(1) 
- sapply(X, length) - always numeric(1) (integer(1) or double(1) for vectors of more than 2^31 - 1 elements)

or more generally

- sapply(X, slot, "myslot") - slot() will always return a character(1) because @myslot is always character(1) (as defined by the class)

Would you still recommend to use vapply() in such cases?

Thank you in advance.

Laurent