Hi all

Sorry for the confusing title. I noticed the following inconsistency:

If i have a function that returns a named list with 2 (or more) elements,
then using 'vapply' retains the names of the elements:

> vapply(1:3, function(x) list("foo" = "bar", "hello" = "world"),
> vector("list", 2))

      [,1]    [,2]    [,3]

foo   "bar"   "bar"   "bar"

hello "world" "world" "world"


But if the function only returns one element, then the name "foo" is lost



> vapply(1:3, function(x) list("foo" = "bar"), vector("list", 1))

[[1]]

[1] "bar"


> [[2]]

[1] "bar"


> [[3]]

[1] "bar"


 Note that when 'lapply' is used instead, the name IS retained

>
> > lapply(1:3, function(x) list("foo" = "bar"))
> [[1]]
> [[1]]$foo
> [1] "bar"
>
> [[2]]
> [[2]]$foo
> [1] "bar"
>
> [[3]]
> [[3]]$foo
> [1] "bar"



I'm not sure if this is intentional or a bug, but it's made my life more
difficult on several occasions and I don't see any reason it would behave
like this.

Thanks

---
http://deanattali.com

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to