在熟悉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”的新列
答案 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")