Thank you so much ... works now ... sooo much to learn ...

Joh

On Mon, 25 Oct 2004 09:56:35 +0200
Martin Maechler <[EMAIL PROTECTED]> wrote:

> >>>>> "Johannes" == Johannes Graumann <[EMAIL PROTECTED]>
> >>>>>     on Sat, 23 Oct 2004 11:04:25 -0700 writes:
> >>>>> "Johannes" == Johannes Graumann <[EMAIL PROTECTED]>
> >>>>>     on Sat, 23 Oct 2004 11:04:25 -0700 writes:
> 
>     Johannes> Hello,
> 
>     Johannes> I seem unable to construct a legend which contains
>     Johannes> a substitution as well as math symbols. I'm trying
>     Johannes> to do the following:
> 
>     >> strain2 <- "YJG48"
> 
>     >> legend.txt <- c(
>     >>        substitute(
>     >>                strain *
>     >>                %==% *
>     >>                "YJG45, rpn10" *
>     >>                %Delta%,
>     >>                list(strain=strain2)
>     >>        ),
>     >>        "Verhulst/Logistic",
>     >>        "Malthus"
>     >> )
> 
> 
>     Johannes>     .....................
> 
> Do try to break down a problem into simple things --
> particularly when you have problems!
> 
> This substitute() call is simply invalid:
> 
>   > ss <- substitute( strain * %==% * "YJG45, rpn10" * %Delta%,
>   > list(strain=strain2) )
>   Error: syntax error
> 
> and the 'syntax error' should give you a clue:  
> The first argument of substitute must be a syntactically correct
> R expression.
> 
> Now you try more and more simple things till you 'see it' :
> 
> Why should I expect  'A * %==% B'  to be valid syntax?
> Both '*' and '%==%' are (diadic) operators: You can't juxtapose
> them, as well as you can't write  'A * = B'.
> Then, '%Delta%' (like any other '%foo%' !!) is a diadic operator
> too and hence can't be juxtaposed to '*'. But I'm pretty sure
> you rather mean (greek) 'Delta'.
> 
> Hence:
>  ss <- substitute( strain %==% "YJG45, rpn10" * Delta,
>  list(strain=strain2) )
> 
> ---
> 
> Once you have the expression you can go further;
> still step by step :
> 
>   > c(ss, "Verhulst")
>   [[1]]
>   "YJG48" %==% "YJG45, rpn10" * Delta
> 
>   [[2]]
>   [1] "Verhulst"
> 
> Hmm, a list; that won't work.
> You do need to pass either a "character" vector or an
> expression, i.e., an expression of length 3 in our case.
> We must build the expression somewhat manually:
> 
>   > e <- expression(1, "Verhulst", "Malthus")# '1' is a place holder
>     expression(1, "Verhulst", "Malthus")
>   > e[[1]] <- ss  ## that's the trick!
> 
>   > str(e)
>     expression("YJG48" %==% "YJG45, rpn10" * Delta, "Verhulst",
>     "Malthus")
> 
>   > plot(1); legend(1,1, leg = e)
> 
> ---
> 
> Maybe something to be added as an example to help(legend) or rather
> to help(expression) ?
> 
> HTH,
> Martin Maechler, ETH Zurich
> 
> ______________________________________________
> [EMAIL PROTECTED] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to