On 1/12/2011 2:46 PM, Mike Williamson wrote:
Hello,
A hopefully simple question. I use 'R' through emacs, but I suspect the
following would occur with any manner of text editor:
- my editor has a normally quite handy feature where it will
automatically indent to the appropriate level when I start a new line.
However, this occasionally creates cases where there is no friendly way to
break a long line of code into two lines which still function as one
command. Therefore, I need a nice way to be able to flag 'R' to know that
the code is continuing on the next line. Let me explain via example:
numericColumns<- names(listOfDataFrames[[myDF]][,columnsOI])
[sapply(listOfDataFrames[[myDF]][,columnsOI],
is.numeric) ]
You can put the right hand side of the assignment in parentheses. Then
even with the same breaks, the first line is not complete, so R will
continue parsing. An emacs still indents reasonably. (I added a second
line break to try and avoid email wrapping affecting things).
numericColumns <- (names(listOfDataFrames[[myDF]][,columnsOI])
[sapply(listOfDataFrames[[myDF]][,columnsOI],
is.numeric)])
As you can see in this case, I would *like* for these 2 lines of code to
be read as 1 line, but since the "names(<blah>)" command is sufficiently a
command on its own, 'R' see this as a completed line of code. I could try
to break it up at different points, but emacs (and other text editors) takes
a guess as to the most intelligent way to indent, so that if I were to write
something like:
numericColumns<- names(listOfDataFrames[[myDF]][,columnsOI])
[sapply(
listOfDataFrames[[myDF]][,columnsOI], is.numeric) ]
it would actually indent something more like this:
numericColumns<- names(listOfDataFrames[[myDF]][,columnsOI])
[sapply(
listOfDataFrames[[myDF]][,columnsOI], is.numeric) ]
and as you can see, that doesn't help the issue of preventing the code from
wrapping around (and therefore doesn't help readability). Is there some
simple way to flag that the next line is continuing? Something like
python's "\" at the end of a line? I tried wrapping the whole thing around
curly braces { } but that didn't work, either.
Putting the right hand side in curly braces might work too. That would
turn it into a code block, which should evaluate to whatever the last
statement in the code block is (which in this case is the only
statement). I wouldn't be surprised if there is some case where curly
braces might lead to a different result; parentheses shouldn't (but I
may be wrong).
Thanks!
Mike
--
Brian S. Diggs, PhD
Senior Research Associate, Department of Surgery
Oregon Health & Science University
______________________________________________
R-help@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.