Writing functions in R

I am familiar with R after good experience with SAS, and I quickly discovered that functions in R do NOT behave like macros in SAS, so I need a little guidance.

Here's my function that doesn't work:

dscore<-function(data,var){

  ave<-mean(data$var)
  sd<-sd(data$var)

  data$vardscore<-(data$var-ave)/sd


  return(data)
}

      

I am using a car dataset

cars<-dscore(cars,speed)

      

Should return me a car data frame with an extra column which is the Cohen D value for variable speed for this observation.

I am getting all sorts of crazy errors, so I would appreciate any help.

edit:

dbind<-function(data,var){
  var<-substitute(var)
  var<-as.character(var)
  ave<-mean(data[,var])
  sd<-sd(data[,var])
  name<-paste0(var,"dscore")
  data$name=((data[,var]-ave)/sd)
  return(data)
}

      

I need help naming a new column dynamically based on input. Right now I am just getting a new column called "name"

+3


source to share


2 answers


You cannot use $

variable sign . Try this instead:

data[,var]

      



where var

should be a symbol, eg."speed"

dscore<-function(data,var){

  ave<-mean(data[,var])
  sd<-sd(data[,var])

  data[,paste0(var,"dscore")]<-(data[,var]-ave)/sd


  return(data)
}

cars<-dscore(cars,var="speed")

      

+3


source


dscore<-function(data,var){
  ave<-mean(data[,var])
  sd<-sd(data[,var])
  data$vardscore<-(data[,var]-ave)/sd
  return(data)
}
cars<-dscore(cars, "speed")

      



+3


source







All Articles