Hi,
I came across a case where I cannot access a list element by its empty name.
Minimal example can be constructed as
??? x=list("A", 1)
??? names(x)=c("a", "")
??? x[["a"]]
??? #[1]? "A"
??? x[[""]]
??? #NULL
??? x$`a`
??? #[1]? "A"
??? x$``
??? # Error: attempt to use zero-length variable name
??? # but we can still access the second element by its index
??? x[[2]]
??? #[1] 1
To my mind, it should be perfectly legal to access an element by an
empty name as we can have for example
??? match("", names(x))
??? #[1] 2
Hence a traditional question: is it a bug or feature?
Best,
Serguei.
> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Mageia 6
Matrix products: default
BLAS/LAPACK: /home/opt/OpenBLAS/lib/libopenblas_sandybridge-r0.3.0.dev.so
locale:
[1] C
attached base packages:
[1] stats???? graphics? grDevices utils???? datasets? methods base
loaded via a namespace (and not attached):
[1] compiler_3.5.0
>>>>> Serguei Sokol writes:> Hi, > I came across a case where I cannot access a list element by its empty name. > Minimal example can be constructed as> ??? x=list("A", 1) > ??? names(x)=c("a", "") > ??? x[["a"]] > ??? #[1]? "A" > ??? x[[""]] > ??? #NULL > ??? x$`a` > ??? #[1]? "A" > ??? x$`` > ??? # Error: attempt to use zero-length variable name > ??? # but we can still access the second element by its index > ??? x[[2]] > ??? #[1] 1> To my mind, it should be perfectly legal to access an element by an > empty name as we can have for example > ??? match("", names(x)) > ??? #[1] 2 > Hence a traditional question: is it a bug or feature?A feature according to the docs: ? Extract says Neither empty (?""?) nor ?NA? indices match any names, not even empty nor missing names. -k> Best, > Serguei.>> sessionInfo() > R version 3.5.0 (2018-04-23) > Platform: x86_64-pc-linux-gnu (64-bit) > Running under: Mageia 6> Matrix products: default > BLAS/LAPACK: /home/opt/OpenBLAS/lib/libopenblas_sandybridge-r0.3.0.dev.so> locale: > [1] C> attached base packages: > [1] stats???? graphics? grDevices utils???? datasets? methods base> loaded via a namespace (and not attached): > [1] compiler_3.5.0> ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
Le 14/05/2018 ? 15:55, Kurt Hornik a ?crit?:>>>>>> Serguei Sokol writes: >> Hi, >> I came across a case where I cannot access a list element by its empty name. >> Minimal example can be constructed as >> ??? x=list("A", 1) >> ??? names(x)=c("a", "") >> ??? x[["a"]] >> ??? #[1]? "A" >> ??? x[[""]] >> ??? #NULL >> ??? x$`a` >> ??? #[1]? "A" >> ??? x$`` >> ??? # Error: attempt to use zero-length variable name >> ??? # but we can still access the second element by its index >> ??? x[[2]] >> ??? #[1] 1 >> To my mind, it should be perfectly legal to access an element by an >> empty name as we can have for example >> ??? match("", names(x)) >> ??? #[1] 2 >> Hence a traditional question: is it a bug or feature? > A feature according to the docs: ? Extract says > > Neither empty (?""?) nor ?NA? indices match any names, not even > empty nor missing names. >Thanks Kurt, I missed that one.