On 12/7/05, Dave Roberts <[EMAIL PROTECTED]> wrote: > Well, this has been an interesting thread. I guess my own perspective > is warped, having never been a C programmer. My native languages are > FORTRAN, python, and R, all of which accept (or demand) a linefeed as a > terminator, rather than a semicolon, and two of which are very > particular about whitespace. > > Accepting for a moment Ted's argument about wanting to compact his code, > the problem as I understand it is that ";" is a statement separator, not > a statement terminator, so that Ted really does need all those ";" in > between his statements on a single line, but that the last one implies a > NULL statement on every line. Given that the ";" facilitates compacting > lines in vi (or vim), how about when the code is compacted you try > > 1,$s/;$// > > which will remove all the final trailing ";" leaving the other necessary > ";" separators.
But watch out for this: x <- "abc; def" > > Dave R. > > (Ted Harding) wrote: > > On 06-Dec-05 Martin Maechler wrote: > > > >>[But really, I'm more concerned and quite bit disappointed by > >> the diehard ";" lovers] > >> > >>Martin Maechler > > > > > > Well, while not die-hard, I will put in my own little reason > > for often using ";" at the end of lines which don't need them. > > > > Basically, this is done to protect me from myself (so in fact > > is quite a strong reason). > > > > I tend to develop extended R code in a "side-window", using > > a text editor (vim) in that window, and cut&pasting the > > chunks of R code from that window into the R window. > > This usually means that I have a lot of short lines, > > since it is easier when developing code to work with the > > commands one per line, as they are easier to find and > > less likely to be "corrected" erroneously. > > > > Finally, when when I am content that the code does the job > > I then put several short lines into one longer one. > > > > For example (a function to do with sampling with probability > > proportional to weights); first, as written line-by-line: > > > > myfunction <- function(X,n1,n2,n3,WTS){ > > N1<-n1; > > N2<-n1+n2; > > N3<-n1+n2+n3; > > # first selection > > pii<-WTS/sum(WTS); > > alpha<-N2; > > Pi<-alpha*pii; > > r<-runif(N3); > > ix<-sort(which(r<=Pi)); > > # second selection > > ix0<-(1:N3); > > ix3<-ix0[-ix]; > > ix20<-ix0[ix]; > > W<-WTS[ix]; > > pii<-W/sum(W); > > Pi<-N1*pii; > > r<-runif(length(Pi)); > > ix10<-sort(which(r<=Pi)); > > ix1<-ix20[ix10]; > > ix2<-ix20[-ix10]; > > # return the results > > list(X1=X[ix1],X2=X[ix2],X3=X[ix3],ix1=ix1,ix2=ix2,ix3=ix3) > > } > > > > > > Having got that function right, with 'vim' in command mode > > successive lines are readily brought up to the current line > > by simply pressing "J", which is very fast. This, in the > > above case, then results in > > > > MARselect<-function(X,n1,n2,n3,WTS){ > > N1<-n1; N2<-n1+n2; N3<-n1+n2+n3; > > # first selection > > pii<-WTS/sum(WTS); alpha<-N2; Pi<-alpha*pii; > > r<-runif(N3); ix<-sort(which(r<=Pi)); > > # second selection > > ix0<-(1:N3); ix3<-ix0[-ix]; ix20<-ix0[ix]; > > W<-WTS[ix]; pii<-W/sum(W); Pi<-N1*pii; > > r<-runif(length(Pi)); ix10<-sort(which(r<=Pi)); > > ix1<-ix20[ix10]; ix2<-ix20[-ix10]; > > # return the results > > list(X1=X[ix1],X2=X[ix2],X3=X[ix3],ix1=ix1,ix2=ix2,ix3=ix3) > > } > > > > The greater readability of the first relative to the second is > > obvious. The compactness of the second relative to the first > > is evident. Obtaining the second from the first by repeated "J" > > is very quick. > > > > BUT -- if I had not put the ";" at the ends of the lines in the > > string-out version (which is easy to do as you type in the line > > in the first place), then it would be much more trouble to get > > the second version, and very easy to get it wrong! > > > > Also, being long used to programming in C and octave/matlab, > > putting ";" at the end of a command is an easy reflex, and of > > course does no harm at all to an R command. > > > > Not that I'm trying to encourage others to do the same as I > > do -- as I said, it's a self-protective habit -- but equally > > if people (e.g. me) may find it useful I don't think it should > > be discouraged either -- especially on "aesthetic" grounds! > > > > Just my little bit ... > > > > Best wishes, > > Ted. > > > > > > -------------------------------------------------------------------- > > E-Mail: (Ted Harding) <[EMAIL PROTECTED]> > > Fax-to-email: +44 (0)870 094 0861 > > Date: 06-Dec-05 Time: 19:02:23 > > ------------------------------ XFMail ------------------------------ > > > > ______________________________________________ > > R-help@stat.math.ethz.ch mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide! > > http://www.R-project.org/posting-guide.html > > > > > > > -- > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > David W. Roberts office 406-994-4548 > Professor and Head FAX 406-994-3190 > Department of Ecology email [EMAIL PROTECTED] > Montana State University > Bozeman, MT 59717-3460 > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html