[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