Hi,

I would like to discuss whether the following behaviour in lists is indeed intended:

###################################################
> sessionInfo()
R version 2.10.0 Under development (unstable) (2009-07-21 r48968)
i386-pc-mingw32

locale:
[1] LC_COLLATE=German_Germany.1252 LC_CTYPE=German_Germany.1252 [3] LC_MONETARY=German_Germany.1252 LC_NUMERIC=C [5] LC_TIME=German_Germany.1252 attached base packages: [1] stats graphics grDevices utils datasets methods base ###################################################

# case 1
x1 <- list(1, 2)
names(x1)[2]
# returns NULL

# case 2
x2 <- list(foo=1, 2)
names(x2)[2]
# returns ""

# case 3
x3 <- list(1, 2)
names(x3)[1] <- "foo"
names(x3)[2]
# returns NA

###################################################

Although I don't find it particularly good that 1) and 2) behave differently, I can very well understand what happens and accept this.

I may also understand (on a technical level) what happens in 3), but I find it very disturbing that these lines

x2 <- list(foo=1, 2)
x3 <- list(1, 2)
names(x3)[1] <- "foo"

produce different results.

?names says

" The name |""| is special: it is used to indicate that there is no name associated with an element of a (atomic or generic) vector. Subscripting by |""| will match nothing (not even elements which have no name).

A name can be character |NA|, but such a name will never be matched and is likely to lead to confusion."

If it "likely leads to confusion" why does the implementation use it?

Regards,

Bernd Bischl

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

Reply via email to