S3 generics without NS and cleanEx()

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

S3 generics without NS and cleanEx()

Torsten Hothorn

Good morning,

we recently observed a problem with importing S3 generics from a foreign
package (without namespace), defining a S3 method in a package _with_
namespace and the `cleanEx()' function which is automatically generated
and executed before examples are run by R CMD check.

To be more precise. Package `strucchange' defines a S3 generic

     sctest <- function(x, ...) UseMethod("sctest")

and the development version of `party' defines

     sctest.mob <- function(x, node = NULL, ...) {
         ...

which is exported in party's namespace

     S3method(sctest, mob)

Creating a `mob' object and running `sctest' on it works fine.

However, when we attach `party' and run `cleanEx()', the `sctest' method
for `mob' is no longer found. Before `cleanEx()' we get

R> methods(sctest)
[1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
sctest.mob*

and afterwards

R> methods(sctest)
[1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp

is missing.

Debugging `cleanEx()' shows that those objects are removed from the
global environment:

ls(envir = env, all.names = TRUE)
[1] ".Random.seed"         ".__S3MethodsTable__." "GCtorture"
[4] "a"                    "euro"

where the second one looks very suspicious.

`party_0.4-0.tar.gz' is available from

     http://www.imbe.med.uni-erlangen.de/~hothorn/party_0.4-0.tar.gz

and

     http://www.imbe.med.uni-erlangen.de/~hothorn/modeltools_0.2-3.tar.gz

is required.

The example below can be reproduced with both R-2.2.1 and R-2.3.0.

Best wishes,

Torsten



R> invisible(options(echo = TRUE))
R> ### * <HEADER>
R> ###
R> attach(NULL, name = "CheckExEnv")
R> assign(".CheckExEnv", as.environment(2), pos = length(search())) # base
R> ## add some hooks to label plot pages for base and grid graphics
R> setHook("plot.new", ".newplot.hook")
R> setHook("persp", ".newplot.hook")
R> setHook("grid.newpage", ".gridplot.hook")
R>
R> assign("cleanEx",
+        function(env = .GlobalEnv) {
+   rm(list = ls(envir = env, all.names = TRUE), envir = env)
+            RNGkind("default", "default")
+   set.seed(1)
+       options(warn = 1)
+   delayedAssign("T", stop("T used instead of TRUE"),
+  assign.env = .CheckExEnv)
+   delayedAssign("F", stop("F used instead of FALSE"),
+  assign.env = .CheckExEnv)
+   sch <- search()
+   newitems <- sch[! sch %in% .oldSearch]
+   for(item in rev(newitems))
+                eval(substitute(detach(item), list(item=item)))
+   missitems <- .oldSearch[! .oldSearch %in% sch]
+   if(length(missitems))
+       warning("items ", paste(missitems, collapse=", "),
+       " have been removed from the search path")
+        },
+        env = .CheckExEnv)
R> assign("..nameEx", "__{must remake R-ex/*.R}__", env = .CheckExEnv) # for now
R> assign("ptime", proc.time(), env = .CheckExEnv)
R> grDevices::postscript("party-Ex.ps")
R> assign("par.postscript", graphics::par(no.readonly = TRUE), env = .CheckExEnv)
R> options(contrasts = c(unordered = "contr.treatment", ordered = "contr.poly"))
R> options(warn = 1)
R> library('party')
Loading required package: survival
Loading required package: splines
Loading required package: grid
Loading required package: modeltools
Loading required package: coin
Loading required package: mvtnorm
Loading required package: zoo
Loading required package: sandwich
Loading required package: strucchange
R>
R> methods(sctest)
[1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp    sctest.mob*

    Non-visible functions are asterisked
R>
R> assign(".oldSearch", search(), env = .CheckExEnv)
R> assign(".oldNS", loadedNamespaces(), env = .CheckExEnv)
R> cleanEx(); ..nameEx <- "BinaryTree-class"
R>
R> methods(sctest)
[1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
R>
R>
R> proc.time()
[1] 1.77 0.01 1.97 0.00 0.00
R>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: S3 generics without NS and cleanEx()

Brian Ripley
Torsten,

The error is that .__S3MethodsTable__. ends up in the global environment.
Are you importing sctest (I can't see it)?  I think that's the problem.

>From R-exts:

The standard method for S3-style @code{UseMethod} dispatching might fail
to locate methods defined in a package that is imported but not attached
to the search path.  To ensure that these methods are available the
packages defining the methods should ensure that the generics are
imported and register the methods using @code{S3method} directives.
^^^^^^^^

Brian

On Wed, 15 Feb 2006, Torsten Hothorn wrote:

>
> Good morning,
>
> we recently observed a problem with importing S3 generics from a foreign
> package (without namespace), defining a S3 method in a package _with_
> namespace and the `cleanEx()' function which is automatically generated
> and executed before examples are run by R CMD check.
>
> To be more precise. Package `strucchange' defines a S3 generic
>
>     sctest <- function(x, ...) UseMethod("sctest")
>
> and the development version of `party' defines
>
>     sctest.mob <- function(x, node = NULL, ...) {
>         ...
>
> which is exported in party's namespace
>
>     S3method(sctest, mob)
>
> Creating a `mob' object and running `sctest' on it works fine.
>
> However, when we attach `party' and run `cleanEx()', the `sctest' method
> for `mob' is no longer found. Before `cleanEx()' we get
>
> R> methods(sctest)
> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
> sctest.mob*
>
> and afterwards
>
> R> methods(sctest)
> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
>
> is missing.
>
> Debugging `cleanEx()' shows that those objects are removed from the
> global environment:
>
> ls(envir = env, all.names = TRUE)
> [1] ".Random.seed"         ".__S3MethodsTable__." "GCtorture"
> [4] "a"                    "euro"
>
> where the second one looks very suspicious.
>
> `party_0.4-0.tar.gz' is available from
>
>     http://www.imbe.med.uni-erlangen.de/~hothorn/party_0.4-0.tar.gz
>
> and
>
>     http://www.imbe.med.uni-erlangen.de/~hothorn/modeltools_0.2-3.tar.gz
>
> is required.
>
> The example below can be reproduced with both R-2.2.1 and R-2.3.0.
>
> Best wishes,
>
> Torsten
>
>
>
> R> invisible(options(echo = TRUE))
> R> ### * <HEADER>
> R> ###
> R> attach(NULL, name = "CheckExEnv")
> R> assign(".CheckExEnv", as.environment(2), pos = length(search())) # base
> R> ## add some hooks to label plot pages for base and grid graphics
> R> setHook("plot.new", ".newplot.hook")
> R> setHook("persp", ".newplot.hook")
> R> setHook("grid.newpage", ".gridplot.hook")
> R>
> R> assign("cleanEx",
> +        function(env = .GlobalEnv) {
> +   rm(list = ls(envir = env, all.names = TRUE), envir = env)
> +            RNGkind("default", "default")
> +   set.seed(1)
> +       options(warn = 1)
> +   delayedAssign("T", stop("T used instead of TRUE"),
> +  assign.env = .CheckExEnv)
> +   delayedAssign("F", stop("F used instead of FALSE"),
> +  assign.env = .CheckExEnv)
> +   sch <- search()
> +   newitems <- sch[! sch %in% .oldSearch]
> +   for(item in rev(newitems))
> +                eval(substitute(detach(item), list(item=item)))
> +   missitems <- .oldSearch[! .oldSearch %in% sch]
> +   if(length(missitems))
> +       warning("items ", paste(missitems, collapse=", "),
> +       " have been removed from the search path")
> +        },
> +        env = .CheckExEnv)
> R> assign("..nameEx", "__{must remake R-ex/*.R}__", env = .CheckExEnv) # for now
> R> assign("ptime", proc.time(), env = .CheckExEnv)
> R> grDevices::postscript("party-Ex.ps")
> R> assign("par.postscript", graphics::par(no.readonly = TRUE), env = .CheckExEnv)
> R> options(contrasts = c(unordered = "contr.treatment", ordered = "contr.poly"))
> R> options(warn = 1)
> R> library('party')
> Loading required package: survival
> Loading required package: splines
> Loading required package: grid
> Loading required package: modeltools
> Loading required package: coin
> Loading required package: mvtnorm
> Loading required package: zoo
> Loading required package: sandwich
> Loading required package: strucchange
> R>
> R> methods(sctest)
> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp    sctest.mob*
>
>    Non-visible functions are asterisked
> R>
> R> assign(".oldSearch", search(), env = .CheckExEnv)
> R> assign(".oldNS", loadedNamespaces(), env = .CheckExEnv)
> R> cleanEx(); ..nameEx <- "BinaryTree-class"
> R>
> R> methods(sctest)
> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
> R>
> R>
> R> proc.time()
> [1] 1.77 0.01 1.97 0.00 0.00
> R>
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>

--
Brian D. Ripley,                  [hidden email]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: S3 generics without NS and cleanEx()

Torsten Hothorn

On Wed, 15 Feb 2006, Prof Brian Ripley wrote:

> Torsten,
>
> The error is that .__S3MethodsTable__. ends up in the global environment.
> Are you importing sctest (I can't see it)?  I think that's the problem.
>

yes. But `strucchange' has no namespace and so I can't import `sctest' in
the NAMESPACE file. Or am I missing something?

Thanks!

Torsten

>> From R-exts:
>
> The standard method for S3-style @code{UseMethod} dispatching might fail
> to locate methods defined in a package that is imported but not attached
> to the search path.  To ensure that these methods are available the
> packages defining the methods should ensure that the generics are
> imported and register the methods using @code{S3method} directives.
> ^^^^^^^^
>
> Brian
>
> On Wed, 15 Feb 2006, Torsten Hothorn wrote:
>
>>
>> Good morning,
>>
>> we recently observed a problem with importing S3 generics from a foreign
>> package (without namespace), defining a S3 method in a package _with_
>> namespace and the `cleanEx()' function which is automatically generated
>> and executed before examples are run by R CMD check.
>>
>> To be more precise. Package `strucchange' defines a S3 generic
>>
>>     sctest <- function(x, ...) UseMethod("sctest")
>>
>> and the development version of `party' defines
>>
>>     sctest.mob <- function(x, node = NULL, ...) {
>>         ...
>>
>> which is exported in party's namespace
>>
>>     S3method(sctest, mob)
>>
>> Creating a `mob' object and running `sctest' on it works fine.
>>
>> However, when we attach `party' and run `cleanEx()', the `sctest' method
>> for `mob' is no longer found. Before `cleanEx()' we get
>>
>> R> methods(sctest)
>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
>> sctest.mob*
>>
>> and afterwards
>>
>> R> methods(sctest)
>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
>>
>> is missing.
>>
>> Debugging `cleanEx()' shows that those objects are removed from the
>> global environment:
>>
>> ls(envir = env, all.names = TRUE)
>> [1] ".Random.seed"         ".__S3MethodsTable__." "GCtorture"
>> [4] "a"                    "euro"
>>
>> where the second one looks very suspicious.
>>
>> `party_0.4-0.tar.gz' is available from
>>
>>     http://www.imbe.med.uni-erlangen.de/~hothorn/party_0.4-0.tar.gz
>>
>> and
>>
>>     http://www.imbe.med.uni-erlangen.de/~hothorn/modeltools_0.2-3.tar.gz
>>
>> is required.
>>
>> The example below can be reproduced with both R-2.2.1 and R-2.3.0.
>>
>> Best wishes,
>>
>> Torsten
>>
>>
>>
>> R> invisible(options(echo = TRUE))
>> R> ### * <HEADER>
>> R> ###
>> R> attach(NULL, name = "CheckExEnv")
>> R> assign(".CheckExEnv", as.environment(2), pos = length(search())) # base
>> R> ## add some hooks to label plot pages for base and grid graphics
>> R> setHook("plot.new", ".newplot.hook")
>> R> setHook("persp", ".newplot.hook")
>> R> setHook("grid.newpage", ".gridplot.hook")
>> R>
>> R> assign("cleanEx",
>> +        function(env = .GlobalEnv) {
>> +   rm(list = ls(envir = env, all.names = TRUE), envir = env)
>> +            RNGkind("default", "default")
>> +   set.seed(1)
>> +       options(warn = 1)
>> +   delayedAssign("T", stop("T used instead of TRUE"),
>> +  assign.env = .CheckExEnv)
>> +   delayedAssign("F", stop("F used instead of FALSE"),
>> +  assign.env = .CheckExEnv)
>> +   sch <- search()
>> +   newitems <- sch[! sch %in% .oldSearch]
>> +   for(item in rev(newitems))
>> +                eval(substitute(detach(item), list(item=item)))
>> +   missitems <- .oldSearch[! .oldSearch %in% sch]
>> +   if(length(missitems))
>> +       warning("items ", paste(missitems, collapse=", "),
>> +       " have been removed from the search path")
>> +        },
>> +        env = .CheckExEnv)
>> R> assign("..nameEx", "__{must remake R-ex/*.R}__", env = .CheckExEnv) # for now
>> R> assign("ptime", proc.time(), env = .CheckExEnv)
>> R> grDevices::postscript("party-Ex.ps")
>> R> assign("par.postscript", graphics::par(no.readonly = TRUE), env = .CheckExEnv)
>> R> options(contrasts = c(unordered = "contr.treatment", ordered = "contr.poly"))
>> R> options(warn = 1)
>> R> library('party')
>> Loading required package: survival
>> Loading required package: splines
>> Loading required package: grid
>> Loading required package: modeltools
>> Loading required package: coin
>> Loading required package: mvtnorm
>> Loading required package: zoo
>> Loading required package: sandwich
>> Loading required package: strucchange
>> R>
>> R> methods(sctest)
>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp    sctest.mob*
>>
>>    Non-visible functions are asterisked
>> R>
>> R> assign(".oldSearch", search(), env = .CheckExEnv)
>> R> assign(".oldNS", loadedNamespaces(), env = .CheckExEnv)
>> R> cleanEx(); ..nameEx <- "BinaryTree-class"
>> R>
>> R> methods(sctest)
>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
>> R>
>> R>
>> R> proc.time()
>> [1] 1.77 0.01 1.97 0.00 0.00
>> R>
>>
>> ______________________________________________
>> [hidden email] mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>
>
> --
> Brian D. Ripley,                  [hidden email]
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: S3 generics without NS and cleanEx()

Brian Ripley
In reply to this post by Brian Ripley
Follow up:

You said

>> which is exported in party's namespace
>>
>>     S3method(sctest, mob)

but that's not true: it is registered not exported.  You need to export it
as strucchange does not have a namespace.


On Wed, 15 Feb 2006, Prof Brian Ripley wrote:

> Torsten,
>
> The error is that .__S3MethodsTable__. ends up in the global environment.
> Are you importing sctest (I can't see it)?  I think that's the problem.
>
>> From R-exts:
>
> The standard method for S3-style @code{UseMethod} dispatching might fail
> to locate methods defined in a package that is imported but not attached
> to the search path.  To ensure that these methods are available the
> packages defining the methods should ensure that the generics are
> imported and register the methods using @code{S3method} directives.
> ^^^^^^^^
>
> Brian
>
> On Wed, 15 Feb 2006, Torsten Hothorn wrote:
>
>>
>> Good morning,
>>
>> we recently observed a problem with importing S3 generics from a foreign
>> package (without namespace), defining a S3 method in a package _with_
>> namespace and the `cleanEx()' function which is automatically generated
>> and executed before examples are run by R CMD check.
>>
>> To be more precise. Package `strucchange' defines a S3 generic
>>
>>     sctest <- function(x, ...) UseMethod("sctest")
>>
>> and the development version of `party' defines
>>
>>     sctest.mob <- function(x, node = NULL, ...) {
>>         ...
>>
>> which is exported in party's namespace
>>
>>     S3method(sctest, mob)
>>
>> Creating a `mob' object and running `sctest' on it works fine.
>>
>> However, when we attach `party' and run `cleanEx()', the `sctest' method
>> for `mob' is no longer found. Before `cleanEx()' we get
>>
>> R> methods(sctest)
>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
>> sctest.mob*
>>
>> and afterwards
>>
>> R> methods(sctest)
>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
>>
>> is missing.
>>
>> Debugging `cleanEx()' shows that those objects are removed from the
>> global environment:
>>
>> ls(envir = env, all.names = TRUE)
>> [1] ".Random.seed"         ".__S3MethodsTable__." "GCtorture"
>> [4] "a"                    "euro"
>>
>> where the second one looks very suspicious.
>>
>> `party_0.4-0.tar.gz' is available from
>>
>>     http://www.imbe.med.uni-erlangen.de/~hothorn/party_0.4-0.tar.gz
>>
>> and
>>
>>     http://www.imbe.med.uni-erlangen.de/~hothorn/modeltools_0.2-3.tar.gz
>>
>> is required.
>>
>> The example below can be reproduced with both R-2.2.1 and R-2.3.0.
>>
>> Best wishes,
>>
>> Torsten
>>
>>
>>
>> R> invisible(options(echo = TRUE))
>> R> ### * <HEADER>
>> R> ###
>> R> attach(NULL, name = "CheckExEnv")
>> R> assign(".CheckExEnv", as.environment(2), pos = length(search())) # base
>> R> ## add some hooks to label plot pages for base and grid graphics
>> R> setHook("plot.new", ".newplot.hook")
>> R> setHook("persp", ".newplot.hook")
>> R> setHook("grid.newpage", ".gridplot.hook")
>> R>
>> R> assign("cleanEx",
>> +        function(env = .GlobalEnv) {
>> +   rm(list = ls(envir = env, all.names = TRUE), envir = env)
>> +            RNGkind("default", "default")
>> +   set.seed(1)
>> +       options(warn = 1)
>> +   delayedAssign("T", stop("T used instead of TRUE"),
>> +  assign.env = .CheckExEnv)
>> +   delayedAssign("F", stop("F used instead of FALSE"),
>> +  assign.env = .CheckExEnv)
>> +   sch <- search()
>> +   newitems <- sch[! sch %in% .oldSearch]
>> +   for(item in rev(newitems))
>> +                eval(substitute(detach(item), list(item=item)))
>> +   missitems <- .oldSearch[! .oldSearch %in% sch]
>> +   if(length(missitems))
>> +       warning("items ", paste(missitems, collapse=", "),
>> +       " have been removed from the search path")
>> +        },
>> +        env = .CheckExEnv)
>> R> assign("..nameEx", "__{must remake R-ex/*.R}__", env = .CheckExEnv) # for now
>> R> assign("ptime", proc.time(), env = .CheckExEnv)
>> R> grDevices::postscript("party-Ex.ps")
>> R> assign("par.postscript", graphics::par(no.readonly = TRUE), env = .CheckExEnv)
>> R> options(contrasts = c(unordered = "contr.treatment", ordered = "contr.poly"))
>> R> options(warn = 1)
>> R> library('party')
>> Loading required package: survival
>> Loading required package: splines
>> Loading required package: grid
>> Loading required package: modeltools
>> Loading required package: coin
>> Loading required package: mvtnorm
>> Loading required package: zoo
>> Loading required package: sandwich
>> Loading required package: strucchange
>> R>
>> R> methods(sctest)
>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp    sctest.mob*
>>
>>    Non-visible functions are asterisked
>> R>
>> R> assign(".oldSearch", search(), env = .CheckExEnv)
>> R> assign(".oldNS", loadedNamespaces(), env = .CheckExEnv)
>> R> cleanEx(); ..nameEx <- "BinaryTree-class"
>> R>
>> R> methods(sctest)
>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
>> R>
>> R>
>> R> proc.time()
>> [1] 1.77 0.01 1.97 0.00 0.00
>> R>
>>
>> ______________________________________________
>> [hidden email] mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>>
>
>

--
Brian D. Ripley,                  [hidden email]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: S3 generics without NS and cleanEx()

Torsten Hothorn

On Wed, 15 Feb 2006, Prof Brian Ripley wrote:

> Follow up:
>
> You said
>
>>> which is exported in party's namespace
>>>
>>>     S3method(sctest, mob)
>
> but that's not true: it is registered not exported.  You need to export it
> as strucchange does not have a namespace.
>

  export(sctest.mob)

instead of

  S3method(sctest, mob)

fixes the problem. Thanks!

Torsten

>
> On Wed, 15 Feb 2006, Prof Brian Ripley wrote:
>
>> Torsten,
>>
>> The error is that .__S3MethodsTable__. ends up in the global environment.
>> Are you importing sctest (I can't see it)?  I think that's the problem.
>>
>>> From R-exts:
>>
>> The standard method for S3-style @code{UseMethod} dispatching might fail
>> to locate methods defined in a package that is imported but not attached
>> to the search path.  To ensure that these methods are available the
>> packages defining the methods should ensure that the generics are
>> imported and register the methods using @code{S3method} directives.
>> ^^^^^^^^
>>
>> Brian
>>
>> On Wed, 15 Feb 2006, Torsten Hothorn wrote:
>>
>>>
>>> Good morning,
>>>
>>> we recently observed a problem with importing S3 generics from a foreign
>>> package (without namespace), defining a S3 method in a package _with_
>>> namespace and the `cleanEx()' function which is automatically generated
>>> and executed before examples are run by R CMD check.
>>>
>>> To be more precise. Package `strucchange' defines a S3 generic
>>>
>>>     sctest <- function(x, ...) UseMethod("sctest")
>>>
>>> and the development version of `party' defines
>>>
>>>     sctest.mob <- function(x, node = NULL, ...) {
>>>         ...
>>>
>>> which is exported in party's namespace
>>>
>>>     S3method(sctest, mob)
>>>
>>> Creating a `mob' object and running `sctest' on it works fine.
>>>
>>> However, when we attach `party' and run `cleanEx()', the `sctest' method
>>> for `mob' is no longer found. Before `cleanEx()' we get
>>>
>>> R> methods(sctest)
>>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
>>> sctest.mob*
>>>
>>> and afterwards
>>>
>>> R> methods(sctest)
>>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
>>>
>>> is missing.
>>>
>>> Debugging `cleanEx()' shows that those objects are removed from the
>>> global environment:
>>>
>>> ls(envir = env, all.names = TRUE)
>>> [1] ".Random.seed"         ".__S3MethodsTable__." "GCtorture"
>>> [4] "a"                    "euro"
>>>
>>> where the second one looks very suspicious.
>>>
>>> `party_0.4-0.tar.gz' is available from
>>>
>>>     http://www.imbe.med.uni-erlangen.de/~hothorn/party_0.4-0.tar.gz
>>>
>>> and
>>>
>>>     http://www.imbe.med.uni-erlangen.de/~hothorn/modeltools_0.2-3.tar.gz
>>>
>>> is required.
>>>
>>> The example below can be reproduced with both R-2.2.1 and R-2.3.0.
>>>
>>> Best wishes,
>>>
>>> Torsten
>>>
>>>
>>>
>>> R> invisible(options(echo = TRUE))
>>> R> ### * <HEADER>
>>> R> ###
>>> R> attach(NULL, name = "CheckExEnv")
>>> R> assign(".CheckExEnv", as.environment(2), pos = length(search())) # base
>>> R> ## add some hooks to label plot pages for base and grid graphics
>>> R> setHook("plot.new", ".newplot.hook")
>>> R> setHook("persp", ".newplot.hook")
>>> R> setHook("grid.newpage", ".gridplot.hook")
>>> R>
>>> R> assign("cleanEx",
>>> +        function(env = .GlobalEnv) {
>>> +   rm(list = ls(envir = env, all.names = TRUE), envir = env)
>>> +            RNGkind("default", "default")
>>> +   set.seed(1)
>>> +       options(warn = 1)
>>> +   delayedAssign("T", stop("T used instead of TRUE"),
>>> +  assign.env = .CheckExEnv)
>>> +   delayedAssign("F", stop("F used instead of FALSE"),
>>> +  assign.env = .CheckExEnv)
>>> +   sch <- search()
>>> +   newitems <- sch[! sch %in% .oldSearch]
>>> +   for(item in rev(newitems))
>>> +                eval(substitute(detach(item), list(item=item)))
>>> +   missitems <- .oldSearch[! .oldSearch %in% sch]
>>> +   if(length(missitems))
>>> +       warning("items ", paste(missitems, collapse=", "),
>>> +       " have been removed from the search path")
>>> +        },
>>> +        env = .CheckExEnv)
>>> R> assign("..nameEx", "__{must remake R-ex/*.R}__", env = .CheckExEnv) # for now
>>> R> assign("ptime", proc.time(), env = .CheckExEnv)
>>> R> grDevices::postscript("party-Ex.ps")
>>> R> assign("par.postscript", graphics::par(no.readonly = TRUE), env = .CheckExEnv)
>>> R> options(contrasts = c(unordered = "contr.treatment", ordered = "contr.poly"))
>>> R> options(warn = 1)
>>> R> library('party')
>>> Loading required package: survival
>>> Loading required package: splines
>>> Loading required package: grid
>>> Loading required package: modeltools
>>> Loading required package: coin
>>> Loading required package: mvtnorm
>>> Loading required package: zoo
>>> Loading required package: sandwich
>>> Loading required package: strucchange
>>> R>
>>> R> methods(sctest)
>>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp    sctest.mob*
>>>
>>>    Non-visible functions are asterisked
>>> R>
>>> R> assign(".oldSearch", search(), env = .CheckExEnv)
>>> R> assign(".oldNS", loadedNamespaces(), env = .CheckExEnv)
>>> R> cleanEx(); ..nameEx <- "BinaryTree-class"
>>> R>
>>> R> methods(sctest)
>>> [1] sctest.Fstats  sctest.efp     sctest.formula sctest.gefp
>>> R>
>>> R>
>>> R> proc.time()
>>> [1] 1.77 0.01 1.97 0.00 0.00
>>> R>
>>>
>>> ______________________________________________
>>> [hidden email] mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>>
>>
>>
>
> --
> Brian D. Ripley,                  [hidden email]
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel