循环在R中没有按预期工作

时间:2018-02-06 15:11:47

标签: r function loops

我有这个例子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

我的函数应该取一列中的值并减去该列的平均值。然后,它将该差异除以该列中的标准差。知道什么是错的吗?

1 个答案:

答案 0 :(得分:3)

return将参数(x-mean(x))作为参数,其余部分将被忽略。完全删除return参数以获得更好的代码。 :normalize <- function(x) {(x - mean(x))/ (sd(x))}。另见?scale