[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