在R中编写函数

时间:2015-06-03 03:59:02

标签: r

在熟悉SAS的经验后,我逐渐熟悉了R,并且我很快发现R中的函数在SAS中的行为不像宏,所以我需要一些指导。

这是我的功能不起作用:

dscore<-function(data,var){

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

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


  return(data)
}

我正在使用汽车数据集

cars<-dscore(cars,speed)

应该给我回车的数据框,附加一列是该观察速度变量的Cohen D值。

我得到各种各样的疯狂错误,所以我将不胜感激。

编辑:

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)
}

我需要帮助根据输入动态命名新列。现在我只得到一个名为“name”的新列

2 个答案:

答案 0 :(得分:3)

您不能将$符号与变量一起使用。请尝试改为:

data[,var]

其中var必须是字符,例如"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")

答案 1 :(得分:3)

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