Dear list, If I have this toy function: toy <- function(b=.95){ toyframe <- data.frame(lion.95 = c(1, 2)) return(toyframe) } How can I obtain that for any value b, the name of the column becomes "lionb", i.e. lion.95 if b = .95, lion.85 if b = .85 etc. knowing that .95 (.85 etc.) may also be given as 0.95 (0.85 etc.) but that the result should be lion.95 (lion.85 etc.) Thanks in advance, Tobias
Dear Tobias, The trick is "Programming on the Language", see e.g. the "R Language Manual". Construct the expression you want, and have it explicitly parsed and evaluated. toy <- function(b=.95){ toyframe <- eval(parse(text=paste("data.frame(lion", b, " = c(1, 2))", sep=""))) return(toyframe) z} toy() toy(0) HTH Thomas --- Thomas Hotz Research Associate in Medical Statistics University of Leicester United Kingdom Department of Epidemiology and Public Health 22-28 Princess Road West Leicester LE1 6TP Tel +44 116 252-5410 Fax +44 116 252-5423 Division of Medicine for the Elderly Department of Medicine The Glenfield Hospital Leicester LE3 9QP Tel +44 116 256-3643 Fax +44 116 232-2976> -----Original Message----- > From: Tobias Verbeke [mailto:tobias_verbeke at skynet.be] > Sent: 25 July 2003 11:16 > To: R-help > Subject: [R] variable name of variable in dataframe > > > Dear list, > > If I have this toy function: > > toy <- function(b=.95){ > toyframe <- data.frame(lion.95 = c(1, 2)) > return(toyframe) > } > > How can I obtain that for any value b, > the name of the column becomes "lionb", > i.e. lion.95 if b = .95, lion.85 if b = .85 etc. > knowing that .95 (.85 etc.) may also be > given as 0.95 (0.85 etc.) but that the > result should be lion.95 (lion.85 etc.) > > > Thanks in advance, > > Tobias > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help >
Assuming 0 <= b < 1 here is one solution: toy <- function(b=.95){ toyframe <- data.frame(dummy = c(1, 2)) # Rename column/field #1 colnames(toyframe)[1] <- sprintf("lion.%02d", as.integer(100*b)); return(toyframe) } Henrik Bengtsson Lund University> -----Original Message----- > From: r-help-bounces at stat.math.ethz.ch > [mailto:r-help-bounces at stat.math.ethz.ch] On Behalf Of Tobias Verbeke > Sent: den 25 juli 2003 12:16 > To: R-help > Subject: [R] variable name of variable in dataframe > > > Dear list, > > If I have this toy function: > > toy <- function(b=.95){ > toyframe <- data.frame(lion.95 = c(1, 2)) > return(toyframe) > } > > How can I obtain that for any value b, > the name of the column becomes "lionb", > i.e. lion.95 if b = .95, lion.85 if b = .85 etc. > knowing that .95 (.85 etc.) may also be > given as 0.95 (0.85 etc.) but that the > result should be lion.95 (lion.85 etc.) > > > Thanks in advance, > > Tobias > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo> /r-help > > >