[Rd] Monkey patching +.POSIXt

Mark.Bravington at csiro.au Mark.Bravington at csiro.au
Thu Sep 10 03:19:39 CEST 2009


Hmmm... 'assign.to.base( "+.POSIXt", myfun)' works on my system (2.9.1 patched on Windows, at time of writing). Could be the 'mvbutils' version, I guess. What happened when you tried it? And what if you did 'getAnywhere( "+.POSIXt")' afterwards?

I was wrong about where '+.POSIXt' lives, though-- sorry. It is directly in 'baseenv()', not in 'baseenv().__S3MethodsTable__.'.  'assign.to.base' looks in both, and in other packages as well as 'baseenv()'.

Mark

-- 
Mark Bravington
CSIRO Mathematical & Information Sciences
Marine Laboratory
Castray Esplanade
Hobart 7001
TAS

ph (+61) 3 6232 5118
fax (+61) 3 6232 5012
mob (+61) 438 315 623

Hadley Wickham wrote:
>> In this particular case, the trick is to assign the new version both
>> into the namespace and into the environment '.__S3MethodsTable__.'
>> inside the namespace.  
> 
> The problem is +.POSIXt doesn't seem to be there:
> 
>> exists("+.POSIXt", asNamespace("base")$.__S3MethodsTable__.,
>> inherits=F)
> [1] FALSE
> 
> 
>> Speaking as a monkey, I do this kind of thing regularly, and there
>> is a function 'assign.to.base' in the 'mvbutils' package that does
>> it automatically, e.g.  
>> 
>> assign.to.base( '+.POSIXt', my.plus.POSIXt)
> 
> I tried that too, but without any luck.
> 
> Hadley


More information about the R-devel mailing list