Andre Zege
2013-Feb-17 02:19 UTC
[R] tidy.source() gets confused when # is not a comment but a part of a literal string?
I needed to clean someone else code and run it through tidy.source. It
encountered a number of hangups which after some experimentation lead me to
suspect that the culprit is # symbol when it is a part of literal string. For
example if i copy the following to the clipboard
confuse.tidy <-
function()
{
txt <- 'abra # cadabra'
}
and run with default arguments
>tidy.source()
I am getting
Error in base::parse(text = text, srcfile = NULL) :
4:46: unexpected INCOMPLETE_STRING
4: txt <- 'abra %InLiNe_IdEnTiFiEr% "# cadabra'"
5: }
However, good news, as i realized after a bit of struggle, is that i could do
>tidy.source(keep.comment=F)
which produces desired
confuse.tidy <- function() {
txt <- "abra # cadabra"
}
Unfortunately, # is sometimes a legitimate part of strings, for example when you
grep through lines from a web page, or when you specify a color in a string with
#. So, I thought it'd be useful to point this out so that someone think of a
workaround for this as dropping comments sometimes means dropping something
valuable.
[[alternative HTML version deleted]]
Yihui Xie
2013-Feb-17 02:49 UTC
[R] tidy.source() gets confused when # is not a comment but a part of a literal string?
Please scroll down to Section 7: https://github.com/yihui/formatR/wiki And this has been reported at https://github.com/yihui/formatR/issues/26 I'll try to fix it after R 3.0 is released. Regards, Yihui -- Yihui Xie <xieyihui at gmail.com> Phone: 515-294-2465 Web: http://yihui.name Department of Statistics, Iowa State University 2215 Snedecor Hall, Ames, IA On Sat, Feb 16, 2013 at 8:19 PM, Andre Zege <azege at yahoo.com> wrote:> I needed to clean someone else code and run it through tidy.source. It encountered a number of hangups which after some experimentation lead me to suspect that the culprit is # symbol when it is a part of literal string. For example if i copy the following to the clipboard > > confuse.tidy <- > function() > { > txt <- 'abra # cadabra' > } > > and run with default arguments > >>tidy.source() > > I am getting > Error in base::parse(text = text, srcfile = NULL) : > 4:46: unexpected INCOMPLETE_STRING > 4: txt <- 'abra %InLiNe_IdEnTiFiEr% "# cadabra'" > 5: } > > However, good news, as i realized after a bit of struggle, is that i could do > >>tidy.source(keep.comment=F) > > which produces desired > > confuse.tidy <- function() { > txt <- "abra # cadabra" > } > > > Unfortunately, # is sometimes a legitimate part of strings, for example when you grep through lines from a web page, or when you specify a color in a string with #. So, I thought it'd be useful to point this out so that someone think of a workaround for this as dropping comments sometimes means dropping something valuable. > [[alternative HTML version deleted]] > > > ______________________________________________ > R-help at r-project.org mailing list > 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. >