[R] mysterious extra spaces appearing in expression paste
chuck at sharpsteen.net
Fri Feb 5 19:01:37 CET 2010
On Fri, Feb 5, 2010 at 9:41 AM, George Locke
<george.locke.physics at gmail.com> wrote:
> So I found workaround for what I'm now pretty sure is a bug.
> the reason I'm sure it's a bug is that i found that I found that
> linebreaks are handled in a wonky but regular way. There's a rule,
> and it's a bad rule, ie a bug.
If only this were true :P
In every programming language there are plenty of bad rules that will
never be changed because it would break a *very large* amount of
existing code that has been written to work under the rule. They
should never be referred to as bugs-- most people use the term
"feature" and add a healthy layer of sarcasm to emphasize their
contempt for the design decision that led to the rule.
> The wonky rule is as follows: text(x,y,expression(paste("thing1
> \n","thing2"))) results in printing thing1 at the requested x/y with
> the linebreak failing to cause a carriage return. That is, thing2
> appears directly below the "1" in thing1.
I think this has to do with your call to expression() wrapping the
paste() command. For example:
text( x, y, paste( "thing1\n", "thing2") )
Plots two lines of text quite nicely. Using expression() around your
paste indicates to R that the text to be plotted should be interpreted
as a mathematical expression. The help page for this behavior,
"Control characters (e.g. \n) are not interpreted in character
strings in plotmath, unlike normal plotting."
So, "\n" is not supported inside an expression() -- trying to use it
produces weird results.
Hope this clarifies things!
More information about the R-help