On Tue, Jun 2, 2009 at 4:13 PM, Stavros Macrakis <macra...@alum.mit.edu> wrote:
> but simply treats the data frame as a *character* list: > > 1 %in% data.frame(a=2,b=1) # TRUE > '1' %in% data.frame(a=2,b=1) # TRUE > 1 %in% data.frame(a=2:3,b=1:2) # FALSE > 1:3 %in% data.frame(a=2:4,b=1:3) # FALSE FALSE FALSE > '1:3' %in% data.frame(a=2:4,b=1:3) # TRUE It applies as.character to the dataframe: > z=data.frame(a=2:4,b=1:3) > as.character(z) [1] "2:4" "1:3" The as.character method for data frames seems to spot integer sequences (but only for int types and not num types) and show the a:b notation: > x=data.frame(z=as.integer(c(1,2,3,4,5))) > str(x) 'data.frame': 5 obs. of 1 variable: $ z: int 1 2 3 4 5 > as.character(x) [1] "1:5" Obviously it doesn't do this for vectors: > as.character(x$z) [1] "1" "2" "3" "4" "5" I suspect it's using 'deparse()' to get the character representation. This function is mentioned in ?as.character, but as.character.default disappears into the infernal .Internal and I don't have time to chase source code - it's sunny outside! Barry ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel