[R] Assign name to a name

Stephen Tucker brown_emu at yahoo.com
Sat Jun 30 07:20:06 CEST 2007


You can just create another variable which contains the "names" you want:


## let
Year <- c(rep(1999,2),rep(2000,2),rep(2001,3))

## one alternative
getYearCode1 <- function(yr) {
  # yr can be a vector
  ifelse(yr==1999,"Year1",
         ifelse(yr==2000,"Year2",
                ifelse(yr==2001,"Year3")))
}

## another alternative
## more appropriate since you probably want 
## a single value returned
getYearCode2 <- function(yr) {
  # yr is a single value
  switch(as.character(yr),
         `1999` = "Year1",
         `2000` = "Year2",
         `2001` = "Year3")
}

## Application:
## single value
getYearCode1(Year[1])
getYearCode2(Year[1])
## on a vector
dataset$YearCode <- getYearCode1(Year)
# or
dataset$YearCode <- sapply(Year,getYearCode2)

## another option is match()
df <- data.frame(Year=c(1999,2000,2001),YearCode=c("Year1","Year2","Year3"))
dataset$YearCode <- df[match(Year,df[,"Year"]),"YearCode"]

##========================================================
## reading from console
subset(dataset,YearCode==scan("",what=""))
subset(dataset,
   YearCode=={x <- function() {cat("YrCode: ");readline("")}; x()})

## or as a function
f <- function(x) {
  g <- function() {
    x <- function() {
      cat("YearCode: ");
      readline("")
    }
    subset(dataset,YearCode==x())
  }
}
getSubset1 <- f(dataset)

## type at console. You will be prompted:
datayear <- getSubset1()

## but easier is
f <- function(x) {
  g <- function(y)
    subset(x,YearCode==y)
}
getSubset2 <- f(dataset)

## type at prompt
datayear <- getSubset1(1999)


--- "Spilak,Jacqueline [Edm]" <Jacqueline.Spilak at EC.gc.ca> wrote:

> I would like to know how I can assign a name to a name.  I have a
> dataset that has different years in it.  I am writing scripts using R
> and I would like to give a month a generic name and then use the generic
> name to do different analysis.  The reason for the generic name would be
> so that I only have to change one thing if I wanted to change the year.
> For example.
> Year1 = 1999
> datayear <- subset(dataset, Year = Year1)
> I would want  to subset for whatever year is in "Year1".  I am not sure
> if R does this but it would be great if it does.  Is there also anyway
> for R to ask the user for the variable in the console without going into
> the script and then use whatever the user puts in. Thanks for the help.
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at 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
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list