--- In reply to: --- >Date: 04.03.04 18:45 (+0000) >From: Barry Rowlingson <[EMAIL PROTECTED]> >To: [EMAIL PROTECTED] >Subject: Re: [Rd] 1.9.0-devel: _ in read.delim and make.names > > Wolfram Fischer wrote: > >In R 1.9.0, make.names will accept "_" as a valid character > >for a syntactically valid name. > > > >I would appreciate to have an option in ``read.delim'' (etc.) > >that would change "_" in headers of input files to "." > >for compatibility with code and data written for R 1.8.1 and before. > > Given that you are going to have to change your code to invoke this > parameter, you may as well just write a 'makeOldStyleNames' function and > call that. > > For example, suppose you currently have: > > myData = read.table("data.csv",sep=",",head=T) > print(myData$foo.1) > > and the data file has a column 'foo_1' which has been renamed to foo.1. > > If the option is added to read.table, you'll have to change your code to > something like: > > myData = read.table("data.csv", sep=",", head=T, oldNames=T)
Another, more precise name for the new argument could be: ``allow.underscores''. > Now that would break in pre-1.9.0 releases. However, if you do: > > myData = read.table("data.csv", sep=",", head=T) > names(myData) = makeOldStyleNames(names(myData)) > > then, as long as makeOldStyleNames doesn't do anything to old style > (dotted) names, and works in 1.8 and 1.9, you have achieved your goal > and got back-compatibility as well. I think that is a good idea and I will use it if there will be no additional argument for read.delim (etc.). > The makeOldStyleNames could be quite tricky - just replacing '_' with > '.' might break if you have 'foo_1' and 'foo.1' in your data frame. > > Perhaps doing the replacement and then calling R's make.names() with > 'unique=T' will work - depending on what 1.9 does in make.unique. > > Baz Thanks - Wolfram ______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-devel