Martin Maechler 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) ?
Martin, a small example is given in the Help Desk in R News 2 (3). Maybe you want to include it ...
Uwe
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
