[R] possibly Error in R version 2.12.1 (2010-12-16)

Rolf Turner rolf.turner at xtra.co.nz
Sun Feb 19 02:20:49 CET 2012


On 19/02/12 08:40, Frank Schwidom wrote:
> How can i file this isssue as an bugreport?
Please don't.  Peter has just explained to you that this is not a bug,
it's a "feature".  You need to amend your understanding of this,
feature; R does not need to be amended.

     cheers,

         Rolf Turner
> On Fri, Feb 03, 2012 at 02:01:02PM +0100, peter dalgaard wrote:
>> On Feb 2, 2012, at 21:24 , Frank Schwidom wrote:
>>
>>> Hi,
>>>
>>> the following Code demonstrates an possibly Error in R
>>> (or you can explain me, why this happens, thanks in advance)
>> Looks like an effect of lazy evaluation: The value of i is not evaluated until after the loop has ended, at which point it will be 2. This is a feature, not an error, even if it confuses people at times...
>>
>> -pd
>>
>>
>>> Code:
>>>
>>> #####################################
>>>
>>> testClass<- function( stackData= c())
>>> {
>>>
>>> list(
>>>
>>>   write= function( ...)
>>>   {
>>>    sChain= ""
>>>    for( s in c( stackData, ...))
>>>    {
>>>     sChain= paste( sChain, '"', sub( '"', '\\\\"', s), '"', sep, sep='')
>>>    }
>>>    write( sChain, fHandle, append=TRUE)
>>>   },
>>>
>>>   stackIt1 = function( ...)
>>>   {
>>>    testClass( stackData= c( stackData, ...))
>>>   },
>>>
>>>   stackIt2 = function( ...)
>>>   {
>>>    tmp= c( stackData, ...)
>>>    testClass( stackData= tmp)
>>>   },
>>>
>>>   getStack = function()
>>>   {
>>>    stackData
>>>   },
>>>
>>>   NULL
>>> )
>>> }
>>>
>>> to1= testClass()
>>>
>>> for( i in 4:2)
>>> {
>>> to1= to1$stackIt1( i)
>>> }
>>>
>>> print( all( rep( 2, 3) == to1$getStack())) # error!
>>>
>>> to2= testClass()
>>>
>>> for( i in 4:2)
>>> {
>>> to2= to2$stackIt2( i)
>>> }
>>>
>>> print( all( 4:2 == to2$getStack())) # correct!
>>>
>>> # what ist the difference between stackIt1 and stackIt2?
>>> # (error appears only by using an for loop)
>>>
>>> "
>>>> version
>>> _
>>> platform       i486-pc-linux-gnu
>>> arch           i486
>>> os             linux-gnu
>>> system         i486, linux-gnu
>>> status
>>> major          2
>>> minor          12.1
>>> year           2010
>>> month          12
>>> day            16
>>> svn rev        53855
>>> language       R
>>> version.string R version 2.12.1 (2010-12-16)
>>>
>>> Regards
>>> "
>>>
>>> ##################################### End of Code
>>>
>>> written in an R-File and called per source( '<Fname>.R')
>>> shows 2 subsequent outputs of 'TRUE', which is not ok
>>> in my mind
>>>
>>> Thanks for your attention.



More information about the R-help mailing list