I am not sure if this is a bug or not. Gabor On Wed, Aug 12, 2015 at 11:51 AM, Luca Cerone <luca.cerone at gmail.com> wrote:> Following up on this, should I report a bug? can you drive me through > the process? > > Cheers, > Luca > > On Thu, Aug 6, 2015 at 4:55 PM, William Dunlap <wdunlap at tibco.com> wrote: >>>> Just a quick question: what's the difference between `[.Date` and >>>> `[[.Date`? >>>> Is it supposed to be the method for accessing the value right? >>> >>>For Dates and atomic vectors in general they are the same, but ... >> >> Even for atomic vectors with names they are not quite the same >> > c(One=1, Two=2)[[2]] >> [1] 2 >> > c(One=1, Two=2)[2] >> Two >> 2 >> (and [[ will only return 1 item, unlike [). >> >> >> Bill Dunlap >> TIBCO Software >> wdunlap tibco.com >> >> On Thu, Aug 6, 2015 at 5:36 AM, G?bor Cs?rdi <csardi.gabor at gmail.com> wrote: >>> >>> On Thu, Aug 6, 2015 at 6:30 AM, Luca Cerone <luca.cerone at gmail.com> wrote: >>> [...] >>> > Just a quick question: what's the difference between `[.Date` and >>> > `[[.Date`? >>> > Is it supposed to be the method for accessing the value right? >>> >>> For Dates and atomic vectors in general they are the same, but in >>> general they are two different operators that behave differently on >>> some data types. E.g. on lists [ selects a sub-list and [[ selects a >>> single element. >>> >>> Gabor >>> >>> [...] >>> >>> ______________________________________________ >>> R-devel at r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >> >>
On Wed, Aug 12, 2015 at 10:55 AM, G?bor Cs?rdi <csardi.gabor at gmail.com> wrote:> I am not sure if this is a bug or not. >I would argue that this isn't a bug, not even in the documentation of "for" (even though it might be clearer). ?"for" says that `seq` is "[A]n expression evaluating to a vector (including a list and an expression) or to a pairlist or 'NULL'". Date objects aren't strictly vectors, so they're treated as integer/numeric. This answer on StackOverflow said that "for" does not copy any of the iterators attributes (including class), which causes this behavior. http://stackoverflow.com/a/23278464/271616 To respond to the original question regarding why the code below, "prints the dates as a string". Quite simply, you convert seq(d1,d2, by=1) to character, so it's no longer a Date. The fact that Sys.Date() and as.character(Sys.Date()) both *print* the same thing does not mean they are the same. for ( dt in as.character(seq(d1,d2, by=1)) ) { print(dt) } Best, Josh> Gabor > > On Wed, Aug 12, 2015 at 11:51 AM, Luca Cerone <luca.cerone at gmail.com> wrote: >> Following up on this, should I report a bug? can you drive me through >> the process? >> >> Cheers, >> Luca >> >> On Thu, Aug 6, 2015 at 4:55 PM, William Dunlap <wdunlap at tibco.com> wrote: >>>>> Just a quick question: what's the difference between `[.Date` and >>>>> `[[.Date`? >>>>> Is it supposed to be the method for accessing the value right? >>>> >>>>For Dates and atomic vectors in general they are the same, but ... >>> >>> Even for atomic vectors with names they are not quite the same >>> > c(One=1, Two=2)[[2]] >>> [1] 2 >>> > c(One=1, Two=2)[2] >>> Two >>> 2 >>> (and [[ will only return 1 item, unlike [). >>> >>> >>> Bill Dunlap >>> TIBCO Software >>> wdunlap tibco.com >>> >>> On Thu, Aug 6, 2015 at 5:36 AM, G?bor Cs?rdi <csardi.gabor at gmail.com> wrote: >>>> >>>> On Thu, Aug 6, 2015 at 6:30 AM, Luca Cerone <luca.cerone at gmail.com> wrote: >>>> [...] >>>> > Just a quick question: what's the difference between `[.Date` and >>>> > `[[.Date`? >>>> > Is it supposed to be the method for accessing the value right? >>>> >>>> For Dates and atomic vectors in general they are the same, but in >>>> general they are two different operators that behave differently on >>>> some data types. E.g. on lists [ selects a sub-list and [[ selects a >>>> single element. >>>> >>>> Gabor >>>> >>>> [...] >>>> >>>> ______________________________________________ >>>> R-devel at r-project.org mailing list >>>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> >>> > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel-- Joshua Ulrich | about.me/joshuaulrich FOSS Trading | www.fosstrading.com
(Resend: was meant for R-devel, not just Joshua)> On Wed, Aug 12, 2015 at 10:55 AM, G?bor Cs?rdi <csardi.gabor at gmail.com> wrote: > > I am not sure if this is a bug or not. > > > I would argue that this isn't a bug, not even in the documentation of > "for" (even though it might be clearer). ?"for" says that `seq` is > "[A]n expression evaluating to a vector (including a list and an > expression) or to a pairlist or 'NULL'". Date objects aren't strictly > vectors, so they're treated as integer/numeric.> This answer on StackOverflow said that "for" does not copy any of the > iterators attributes (including class), which causes this behavior. > http://stackoverflow.com/a/23278464/271616> To respond to the original question regarding why the code below, > "prints the dates as a string". Quite simply, you convert seq(d1,d2, > by=1) to character, so it's no longer a Date. The fact that > Sys.Date() and as.character(Sys.Date()) both *print* the same thing > does not mean they are the same.> for ( dt in as.character(seq(d1,d2, by=1)) ) { > print(dt) > }> Best, > JoshThank you, Joshua. Definitely no bug ... but possibly something where the documentation (== the help page, not Google, not Stackoverflow, ... ;-\ ) can be improved. Indeed, one could add what ``evaluating to a vector'' means; I don't have time now, but am almost sure that we could state that for(n in obj) { ... } should be semantically equivalent to for(n in as.vector(obj)) { ... } but there may be subtleties here.... --> posting back to R-devel so people can experiment if the above is true, and if not *where*. Martin> > Gabor > > > > On Wed, Aug 12, 2015 at 11:51 AM, Luca Cerone <luca.cerone at gmail.com> wrote: > >> Following up on this, should I report a bug? can you drive me through > >> the process? > >> > >> Cheers, > >> Luca > >> > >> On Thu, Aug 6, 2015 at 4:55 PM, William Dunlap <wdunlap at tibco.com> wrote: > >>>>> Just a quick question: what's the difference between `[.Date` and > >>>>> `[[.Date`? > >>>>> Is it supposed to be the method for accessing the value right? > >>>> > >>>>For Dates and atomic vectors in general they are the same, but ... > >>> > >>> Even for atomic vectors with names they are not quite the same > >>> > c(One=1, Two=2)[[2]] > >>> [1] 2 > >>> > c(One=1, Two=2)[2] > >>> Two > >>> 2 > >>> (and [[ will only return 1 item, unlike [). > >>> > >>> > >>> Bill Dunlap > >>> TIBCO Software > >>> wdunlap tibco.com > >>> > >>> On Thu, Aug 6, 2015 at 5:36 AM, G?bor Cs?rdi <csardi.gabor at gmail.com> wrote: > >>>> > >>>> On Thu, Aug 6, 2015 at 6:30 AM, Luca Cerone <luca.cerone at gmail.com> wrote: > >>>> [...] > >>>> > Just a quick question: what's the difference between `[.Date` and > >>>> > `[[.Date`? > >>>> > Is it supposed to be the method for accessing the value right? > >>>> > >>>> For Dates and atomic vectors in general they are the same, but in > >>>> general they are two different operators that behave differently on > >>>> some data types. E.g. on lists [ selects a sub-list and [[ selects a > >>>> single element. > >>>> > >>>> Gabor > >>>> > >>>> [...]> -- > Joshua Ulrich | about.me/joshuaulrich > FOSS Trading | www.fosstrading.com> ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel