[R] removing elements from a "unit" vector

Duncan Murdoch murdoch at stats.uwo.ca
Tue Jun 9 15:27:53 CEST 2009


On 6/9/2009 9:02 AM, baptiste auguie wrote:
> Dear list,
> 
> I'm quite surprised by this,
> 
> unit(1:5,"char")[-c(1:2)]
> #4char 3char # what's going on??
> 
> while I expected something like,
> 
> 
> c(1:5)[-c(1:2)]
> 
> # 3 4 5
> 
> Note that,
> 
> unit(1:5,"char")[c(1:2)]
> 
> # 1char 2char  # fine
> 
> ?unit warns about unit.c for concatenating, but also says,
> 
> It is possible to subset unit objects in the normal way (e.g., unit(1:5,"npc")[2:4])
> 
> Am I missing something obvious?

No, I think the grid:::unit.[ method has a bug.  It does the indexing of 
an object x by making sure the indices are integers, then

  class(x) <- NULL
  x <- x[(index - 1)%%this.length + 1]

which assumes that index has positive entries.

Duncan Murdoch

> 
> Thanks,
> 
> baptiste
> 
> sessionInfo()
> R version 2.9.0 (2009-04-17) 
> i386-apple-darwin8.11.1 
> 
> locale:
> en_GB.UTF-8/en_US.UTF-8/C/C/en_GB.UTF-8/en_GB.UTF-8
> 
> attached base packages:
> [1] datasets  stats     grid      graphics  grDevices utils     methods   base
> 
> ______________________________________________
> R-help at r-project.org mailing list
> 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.




More information about the R-help mailing list