В этом случае цикл не требуется. Вместо этого используйте векторизацию. Давайте рассмотрим следующие смоделированные данные: (не уверен, что он точно воспроизведет ваш набор данных, но, надеюсь, вы получите общее представление)
dfrm <- data.frame(cond=gl(2, 1, 100, labels=LETTERS[1:2]),
user=gl(50, 2, labels=paste("id", 1:20, sep="")),
sensitivity=runif(100, 1, 5))
Вычисление z-показателей так же просто, как
dfrm$z.sensitivity <- scale(dfrm$sensitivity)
Если вы хотите, чтобы z-показатели были условными для cond
, то вы можете сделать либо
with(dfrm, tapply(sensitivity, cond, scale))
или, используя plyr ,
ddply(dfrm, c("cond"), transform, sensitivity.z = scale(sensitivity))