我有这个例子df:
test1 <- c(2,3,4,5)
test2 <- c(6,7,8,11)
testing.df<- as.data.frame(rbind(test1,test2))
这是我的循环没有按预期工作:
normalize <- function(x) {
return (x - mean(x))/ (sd(x)) }
当我将我的函数normalize
应用于我的df:
testing.df[,3:4] <- as.data.frame(lapply(testing.df[,c(3:4)], normalize))
我得到了这个输出:
# V1 V2 V3 V4
#test1 2 3 -2 -3
#test2 6 7 2 3
我应该得到
# V1 V2 V3 V4
#test1 2 3 -0.7071068 -0.7071068
#test2 6 7 0.7071068 0.7071067
我的函数应该取一列中的值并减去该列的平均值。然后,它将该差异除以该列中的标准差。知道什么是错的吗?
答案 0 :(得分:3)
return
将参数(x-mean(x))
作为参数,其余部分将被忽略。完全删除return
参数以获得更好的代码。 :normalize <- function(x) {(x - mean(x))/ (sd(x))}
。另见?scale
。