In effect, this works
but whether I use x or x.init, y or y.init in plot.func, I get
no visible binding for global variable ?x.init?no visible binding for global
variable ?y.init?
Regards,
On Monday, October 19, 2015 9:59 PM, Duncan Murdoch <murdoch.duncan at
gmail.com> wrote:
On 19/10/2015 3:50 PM, carol white wrote:> Thanks Murdoch.
>
> defining
> plot.func<- function(x=x.init, y=y.init, arg3, arg4, "title",
col, arg5)
>
> and if plot doesn't take the exact parameters of plot.func but modified
> of these parameters
> plot(x=x.pt,y=y.pt,xlim = c(0, 10), ylim = c(0,1), xlab= "xlab",
> ylab="ylab", main = "title", col = col,type =
"l")
>
> then, how to define and invoke to be consisent?
I don't really understand your question, but this is all about the
function header for plot.func, not the call you make to plot().? You
need to name the first argument as "x", you need to include
"..." as an
open argument, and you need a legal header.? So this would be okay:
plot.func<- function(x=x.init, y=y.init, arg3, arg4,
? ? ? ? ? ? ? ? ? ? main = "title", # can't skip the arg name
? ? ? ? ? ? ? ? ? ? col, arg5,
? ? ? ? ? ? ? ? ? ? ...)? {? ? ? ? ? # can't skip the dots
Duncan Murdoch
>
> Regards,
>
> On Monday, October 19, 2015 7:45 PM, Duncan Murdoch
> <murdoch.duncan at gmail.com> wrote:
>
>
> On 19/10/2015 1:29 PM, carol white via R-help wrote:
>
>> Hi,I have invoked plot in a function (plot.func) as follows but when I
> check the built package, I get a warning:
>> plot(x.pt,y.pt,xlim = c(0, 10), ylim = c(0,1), xlab= "xlab",
> ylab="ylab", main = "title", col = col,type =
"l")
>> R CMD check my.package
>> checking S3 generic/method consistency ... WARNING
>> plot:
>>? function(x, ...)
>> plot.func:
>>? function(x.pt, y.pt, arg3, arg4, "title", col, arg5)
>>
>> See section ?Generic functions and methods? in the ?Writing R
>> Extensions? manual.
>> Which plot argument is illegitimate or missing and how to eliminate
> the warning?
>
>
> The first argument to plot.func needs to be called "x" if you
want to
> use it as a method.? Method signatures need to be consistent with the
> generic signature.
>
> Duncan Murdoch
>
>
>
>
[[alternative HTML version deleted]]
I think what you may have done is simply changed x.init= to x=x.init.
x.init may or may not be there when the function is called, and that is
what the warning is saying. While you have satisfied the restriction that
the first argument must be "x", but then set the default value to
something
that R is unable to resolve to a value. What you may want to do is
something like this:
plot.func<-function(x,y,...) {
if(missing(x)) stop("Must have an x value")
if(missing(y)) stop("Must have a y value")
...
}
Jim
On Tue, Oct 20, 2015 at 7:32 AM, carol white via R-help <
r-help at r-project.org> wrote:
> In effect, this works
> but whether I use x or x.init, y or y.init in plot.func, I get
>
> no visible binding for global variable ?x.init?no visible binding for
> global variable ?y.init?
> Regards,
>
> On Monday, October 19, 2015 9:59 PM, Duncan Murdoch <
> murdoch.duncan at gmail.com> wrote:
>
>
> On 19/10/2015 3:50 PM, carol white wrote:
> > Thanks Murdoch.
> >
> > defining
> > plot.func<- function(x=x.init, y=y.init, arg3, arg4,
"title", col, arg5)
> >
> > and if plot doesn't take the exact parameters of plot.func but
modified
> > of these parameters
> > plot(x=x.pt,y=y.pt,xlim = c(0, 10), ylim = c(0,1), xlab=
"xlab",
> > ylab="ylab", main = "title", col = col,type =
"l")
> >
> > then, how to define and invoke to be consisent?
>
> I don't really understand your question, but this is all about the
> function header for plot.func, not the call you make to plot(). You
> need to name the first argument as "x", you need to include
"..." as an
> open argument, and you need a legal header. So this would be okay:
>
>
> plot.func<- function(x=x.init, y=y.init, arg3, arg4,
> main = "title", # can't skip the arg name
> col, arg5,
> ...) { # can't skip the dots
>
> Duncan Murdoch
>
> >
> > Regards,
> >
> > On Monday, October 19, 2015 7:45 PM, Duncan Murdoch
> > <murdoch.duncan at gmail.com> wrote:
> >
> >
> > On 19/10/2015 1:29 PM, carol white via R-help wrote:
> >
> >> Hi,I have invoked plot in a function (plot.func) as follows but
when I
> > check the built package, I get a warning:
> >> plot(x.pt,y.pt,xlim = c(0, 10), ylim = c(0,1), xlab=
"xlab",
> > ylab="ylab", main = "title", col = col,type =
"l")
> >> R CMD check my.package
> >> checking S3 generic/method consistency ... WARNING
> >> plot:
> >> function(x, ...)
> >> plot.func:
> >> function(x.pt, y.pt, arg3, arg4, "title", col, arg5)
> >>
> >> See section ?Generic functions and methods? in the ?Writing R
> >> Extensions? manual.
> >> Which plot argument is illegitimate or missing and how to
eliminate
> > the warning?
> >
> >
> > The first argument to plot.func needs to be called "x" if
you want to
> > use it as a method. Method signatures need to be consistent with the
> > generic signature.
> >
> > Duncan Murdoch
> >
> >
> >
> >
>
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
[[alternative HTML version deleted]]
Jim's solution works.
Thank you
Carol
On Monday, October 19, 2015 11:53 PM, Jim Lemon <drjimlemon at
gmail.com> wrote:
I think what you may have done is simply changed x.init= to x=x.init. x.init
may or may not be there when the function is called, and that is what the
warning is saying. While you have satisfied the restriction that the first
argument must be "x", but then set the default value to something that
R is unable to resolve to a value. What you may want to do is something like
this:
plot.func<-function(x,y,...) {?if(missing(x)) stop("Must have an x
value")?if(missing(y)) stop("Must have a y value")?...}
Jim
On Tue, Oct 20, 2015 at 7:32 AM, carol white via R-help <r-help at
r-project.org> wrote:
In effect, this works
but whether I use x or x.init, y or y.init in plot.func, I get
no visible binding for global variable ?x.init?no visible binding for global
variable ?y.init?
Regards,
? ? ?On Monday, October 19, 2015 9:59 PM, Duncan Murdoch <murdoch.duncan at
gmail.com> wrote:
?On 19/10/2015 3:50 PM, carol white wrote:> Thanks Murdoch.
>
> defining
> plot.func<- function(x=x.init, y=y.init, arg3, arg4, "title",
col, arg5)
>
> and if plot doesn't take the exact parameters of plot.func but modified
> of these parameters
> plot(x=x.pt,y=y.pt,xlim = c(0, 10), ylim = c(0,1), xlab= "xlab",
> ylab="ylab", main = "title", col = col,type =
"l")
>
> then, how to define and invoke to be consisent?
I don't really understand your question, but this is all about the
function header for plot.func, not the call you make to plot().? You
need to name the first argument as "x", you need to include
"..." as an
open argument, and you need a legal header.? So this would be okay:
plot.func<- function(x=x.init, y=y.init, arg3, arg4,
? ? ? ? ? ? ? ? ? ? main = "title", # can't skip the arg name
? ? ? ? ? ? ? ? ? ? col, arg5,
? ? ? ? ? ? ? ? ? ? ...)? {? ? ? ? ? # can't skip the dots
Duncan Murdoch
>
> Regards,
>
> On Monday, October 19, 2015 7:45 PM, Duncan Murdoch
> <murdoch.duncan at gmail.com> wrote:
>
>
> On 19/10/2015 1:29 PM, carol white via R-help wrote:
>
>> Hi,I have invoked plot in a function (plot.func) as follows but when I
> check the built package, I get a warning:
>> plot(x.pt,y.pt,xlim = c(0, 10), ylim = c(0,1), xlab= "xlab",
> ylab="ylab", main = "title", col = col,type =
"l")
>> R CMD check my.package
>> checking S3 generic/method consistency ... WARNING
>> plot:
>>? function(x, ...)
>> plot.func:
>>? function(x.pt, y.pt, arg3, arg4, "title", col, arg5)
>>
>> See section ?Generic functions and methods? in the ?Writing R
>> Extensions? manual.
>> Which plot argument is illegitimate or missing and how to eliminate
> the warning?
>
>
> The first argument to plot.func needs to be called "x" if you
want to
> use it as a method.? Method signatures need to be consistent with the
> generic signature.
>
> Duncan Murdoch
>
>
>
>
? ? ? ? [[alternative HTML version deleted]]
______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
[[alternative HTML version deleted]]
David Stevens
2015-Oct-27 19:52 UTC
[R] warning on generic function when building R package
Sorry to be a late comer to this problem but I'm having a similar
issue. My function is called by ode from deSolve
ADM1_C <- function(t,state,parameters,...){
with(as.list(c(state,parameters)), {
# do some stuff here and return a list containing a vector of
derivatives to ode
...
})
}
in which 't' is a time and 'state' and 'parameters' are
numeric vectors
with each element named. When I invoke the solver,
times <- d.df$time
out <- as.data.frame(ode(y = state,times = times,func = ADM1_C,parms =
parameters))
I get ~three Note:s for each value in 'state' (sometimes more). The
calculation is successful but the issue is a little puzzling.
Here's 'state'
state
Ssu Saa Sfa Sva Sbu Spro Sac Sh2
Sch4 Sic
0.300000 0.001000 0.300000 0.300000 0.300000 0.300000 0.300000 0.000001
0.000010 0.040000
Sin Si Xc Xch Xpr Xli Xsu Xaa
Xfa Xc4
0.010000 0.020000 0.300000 0.026000 0.300000 0.030000 0.400000 1.100000
0.200000 0.410000
Xpro Xac Xh2 Xi Scation Sanion Sva_m Sbu_m
Spro_m Sac_m
0.137000 0.700000 0.010000 5.000000 0.040000 0.020000 0.090000 0.090000
0.074000 0.169000
Shco3_m Snh3 Sgas_h2 Sgas_ch4 Sgas_co2
0.009700 0.016000 0.020000 0.020000 0.037600
The messages are something like this ...
Note: no visible binding for global variable 'Sin'
Note: no visible binding for global variable 'Snh3'
Note: no visible binding for global variable 'Scation'
Note: no visible binding for global variable 'Shco3_m'
.... (~130 rows of these messages)
Neither Duncan's nor Jim's solution solved the problem. I can't
change
(at least I don't think so) how ode(...) calls the function except via
the documentation. Any ideas? Does it matter? Could it be ode strips out
the names, but only sometimes?
signed Grasping at Straws (David)
David K Stevens, P.E., Ph.D.
Professor and Head, Environmental Engineering
Civil and Environmental Engineering
Utah Water Research Laboratory
8200 Old Main Hill
Logan, UT 84322-8200
435 797 3229 - voice
435 797 1363 - fax
david.stevens at usu.edu
On 10/19/2015 2:32 PM, carol white via R-help wrote:> In effect, this works
> but whether I use x or x.init, y or y.init in plot.func, I get
>
> no visible binding for global variable ?x.init?no visible binding for
global variable ?y.init?
> Regards,
>
> On Monday, October 19, 2015 9:59 PM, Duncan Murdoch
<murdoch.duncan at gmail.com> wrote:
>
>
> On 19/10/2015 3:50 PM, carol white wrote:
>> Thanks Murdoch.
>>
>> defining
>> plot.func<- function(x=x.init, y=y.init, arg3, arg4,
"title", col, arg5)
>>
>> and if plot doesn't take the exact parameters of plot.func but
modified
>> of these parameters
>> plot(x=x.pt,y=y.pt,xlim = c(0, 10), ylim = c(0,1), xlab=
"xlab",
>> ylab="ylab", main = "title", col = col,type =
"l")
>>
>> then, how to define and invoke to be consisent?
> I don't really understand your question, but this is all about the
> function header for plot.func, not the call you make to plot(). You
> need to name the first argument as "x", you need to include
"..." as an
> open argument, and you need a legal header. So this would be okay:
>
>
> plot.func<- function(x=x.init, y=y.init, arg3, arg4,
> main = "title", # can't skip the arg
name
> col, arg5,
> ...) { # can't skip the dots
>
> Duncan Murdoch
>
>> Regards,
>>
>> On Monday, October 19, 2015 7:45 PM, Duncan Murdoch
>> <murdoch.duncan at gmail.com> wrote:
>>
>>
>> On 19/10/2015 1:29 PM, carol white via R-help wrote:
>>
>>> Hi,I have invoked plot in a function (plot.func) as follows but
when I
>> check the built package, I get a warning:
>>> plot(x.pt,y.pt,xlim = c(0, 10), ylim = c(0,1), xlab=
"xlab",
>> ylab="ylab", main = "title", col = col,type =
"l")
>>> R CMD check my.package
>>> checking S3 generic/method consistency ... WARNING
>>> plot:
>>> function(x, ...)
>>> plot.func:
>>> function(x.pt, y.pt, arg3, arg4, "title", col, arg5)
>>>
>>> See section ?Generic functions and methods? in the ?Writing R
>>> Extensions? manual.
>>> Which plot argument is illegitimate or missing and how to eliminate
>> the warning?
>>
>>
>> The first argument to plot.func needs to be called "x" if you
want to
>> use it as a method. Method signatures need to be consistent with the
>> generic signature.
>>
>> Duncan Murdoch
>>
>>
>>
>>
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
Duncan Murdoch
2015-Oct-27 20:05 UTC
[R] warning on generic function when building R package
On 27/10/2015 3:52 PM, David Stevens wrote:> Sorry to be a late comer to this problem but I'm having a similar > issue. My function is called by ode from deSolve > > ADM1_C <- function(t,state,parameters,...){ > > with(as.list(c(state,parameters)), { > # do some stuff here and return a list containing a vector of > derivatives to ode > ... > }) > } > in which 't' is a time and 'state' and 'parameters' are numeric vectors > with each element named. When I invoke the solver, > > times <- d.df$time > out <- as.data.frame(ode(y = state,times = times,func = ADM1_C,parms = > parameters)) > > I get ~three Note:s for each value in 'state' (sometimes more). The > calculation is successful but the issue is a little puzzling. > Here's 'state' > state > Ssu Saa Sfa Sva Sbu Spro Sac Sh2 > Sch4 Sic > 0.300000 0.001000 0.300000 0.300000 0.300000 0.300000 0.300000 0.000001 > 0.000010 0.040000 > Sin Si Xc Xch Xpr Xli Xsu Xaa > Xfa Xc4 > 0.010000 0.020000 0.300000 0.026000 0.300000 0.030000 0.400000 1.100000 > 0.200000 0.410000 > Xpro Xac Xh2 Xi Scation Sanion Sva_m Sbu_m > Spro_m Sac_m > 0.137000 0.700000 0.010000 5.000000 0.040000 0.020000 0.090000 0.090000 > 0.074000 0.169000 > Shco3_m Snh3 Sgas_h2 Sgas_ch4 Sgas_co2 > 0.009700 0.016000 0.020000 0.020000 0.037600 > > The messages are something like this ... > Note: no visible binding for global variable 'Sin' > Note: no visible binding for global variable 'Snh3' > Note: no visible binding for global variable 'Scation' > Note: no visible binding for global variable 'Shco3_m' > .... (~130 rows of these messages)I don't see how this has anything to do with the previous problem.> > Neither Duncan's nor Jim's solution solved the problem. I can't change > (at least I don't think so) how ode(...) calls the function except via > the documentation. Any ideas? Does it matter? Could it be ode strips out > the names, but only sometimes?You will need to post something that we can reproduce if you want help with it. (Please do this on a new thread, since you really have nothing to do with generic functions as far as I can see.) Or you can add cat() and print() statements to your function (or set breakpoints in a debugger) and you'll be able to see what it's getting. Duncan Murdoch> > signed Grasping at Straws (David) > > David K Stevens, P.E., Ph.D. > Professor and Head, Environmental Engineering > Civil and Environmental Engineering > Utah Water Research Laboratory > 8200 Old Main Hill > Logan, UT 84322-8200 > 435 797 3229 - voice > 435 797 1363 - fax > david.stevens at usu.edu > > > On 10/19/2015 2:32 PM, carol white via R-help wrote: >> In effect, this works >> but whether I use x or x.init, y or y.init in plot.func, I get >> >> no visible binding for global variable ?x.init?no visible binding for global variable ?y.init? >> Regards, >> >> On Monday, October 19, 2015 9:59 PM, Duncan Murdoch <murdoch.duncan at gmail.com> wrote: >> >> >> On 19/10/2015 3:50 PM, carol white wrote: >>> Thanks Murdoch. >>> >>> defining >>> plot.func<- function(x=x.init, y=y.init, arg3, arg4, "title", col, arg5) >>> >>> and if plot doesn't take the exact parameters of plot.func but modified >>> of these parameters >>> plot(x=x.pt,y=y.pt,xlim = c(0, 10), ylim = c(0,1), xlab= "xlab", >>> ylab="ylab", main = "title", col = col,type = "l") >>> >>> then, how to define and invoke to be consisent? >> I don't really understand your question, but this is all about the >> function header for plot.func, not the call you make to plot(). You >> need to name the first argument as "x", you need to include "..." as an >> open argument, and you need a legal header. So this would be okay: >> >> >> plot.func<- function(x=x.init, y=y.init, arg3, arg4, >> main = "title", # can't skip the arg name >> col, arg5, >> ...) { # can't skip the dots >> >> Duncan Murdoch >> >>> Regards, >>> >>> On Monday, October 19, 2015 7:45 PM, Duncan Murdoch >>> <murdoch.duncan at gmail.com> wrote: >>> >>> >>> On 19/10/2015 1:29 PM, carol white via R-help wrote: >>> >>>> Hi,I have invoked plot in a function (plot.func) as follows but when I >>> check the built package, I get a warning: >>>> plot(x.pt,y.pt,xlim = c(0, 10), ylim = c(0,1), xlab= "xlab", >>> ylab="ylab", main = "title", col = col,type = "l") >>>> R CMD check my.package >>>> checking S3 generic/method consistency ... WARNING >>>> plot: >>>> function(x, ...) >>>> plot.func: >>>> function(x.pt, y.pt, arg3, arg4, "title", col, arg5) >>>> >>>> See section ?Generic functions and methods? in the ?Writing R >>>> Extensions? manual. >>>> Which plot argument is illegitimate or missing and how to eliminate >>> the warning? >>> >>> >>> The first argument to plot.func needs to be called "x" if you want to >>> use it as a method. Method signatures need to be consistent with the >>> generic signature. >>> >>> Duncan Murdoch >>> >>> >>> >>> >> >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >