Hi there,
I have a function which has a variable called show as an input:
richardson.grad <- function(func, x, d=0.01, eps=1e-4, r=6, show=F){
# do some things
if(show) {
cat("\n","first order approximations",
"\n")
print(a.mtr, 12)
}
#do more things and return
}
The show variable is being used as a flag to show intermediate results.
Interestingly enough, I have downloaded a package recently which defines
the show variable as a function:
> show
standardGeneric for "show" defined from package "methods"
function (object)
standardGeneric("show")
<environment: 01676F7C>
Methods may be defined for arguments: object
>
Now, all of a sudden, the function I had defined earlier is scoping up
to this new value, and is thus not working:
> richardson.grad(function(x) x^2,2)
Error in if (show) { : argument is not interpretable as logical
>
I could always redefine show in richardson.grad to be something else but
something seems wrong: why is richardson.grad not looking up show's
value in the function ? How would I fix this ?
Thanks in advance,
Tolga
Without a reproducible example one can only guess but perhaps the problem is not show but that you have a variable F. Try writing out F as FALSE. On 2/16/06, Tolga Uzuner <tolga at coubros.com> wrote:> Hi there, > > I have a function which has a variable called show as an input: > > richardson.grad <- function(func, x, d=0.01, eps=1e-4, r=6, show=F){ > # do some things > if(show) { > > cat("\n","first order approximations", "\n") > print(a.mtr, 12) > > > } > #do more things and return > } > > The show variable is being used as a flag to show intermediate results. > > Interestingly enough, I have downloaded a package recently which defines > the show variable as a function: > > > show > standardGeneric for "show" defined from package "methods" > > function (object) > standardGeneric("show") > <environment: 01676F7C> > Methods may be defined for arguments: object > > > > > Now, all of a sudden, the function I had defined earlier is scoping up > to this new value, and is thus not working: > > > richardson.grad(function(x) x^2,2) > Error in if (show) { : argument is not interpretable as logical > > > > I could always redefine show in richardson.grad to be something else but > something seems wrong: why is richardson.grad not looking up show's > value in the function ? How would I fix this ? > > Thanks in advance, > Tolga > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html >
On Thu, 16 Feb 2006, Tolga Uzuner wrote:> I have a function which has a variable called show as an input: > > richardson.grad <- function(func, x, d=0.01, eps=1e-4, r=6, show=F){ > # do some things > if(show) { > > cat("\n","first order approximations", "\n") > print(a.mtr, 12) > > > } > #do more things and return > } > > The show variable is being used as a flag to show intermediate results. > > Interestingly enough, I have downloaded a package recently which defines > the show variable as a function: > > > show > standardGeneric for "show" defined from package "methods" > > function (object) > standardGeneric("show") > <environment: 01676F7C> > Methods may be defined for arguments: object > > > > > Now, all of a sudden, the function I had defined earlier is scoping up > to this new value, and is thus not working: > > > richardson.grad(function(x) x^2,2) > Error in if (show) { : argument is not interpretable as logical > > > > I could always redefine show in richardson.grad to be something else but > something seems wrong: why is richardson.grad not looking up show's > value in the function ? How would I fix this ?You didn't spell out the logical value 'FALSE' which may be causing your problem. Consider this alternative also... richardson.grad <- function(func, x, d = 0.01, eps = 1e-4, r = 6, verbose = getOption("verbose")) { ## do some things if (verbose) { cat("\n", "first order approximations:", "\n") print(a.mtr, 12) } ## do more things and return } ---------------------------------------------------------- SIGSIG -- signature too long (core dumped)