# comparemos tres formas distintas de hacer una cálculo #### for: no es vectorizado #### apply que si es vectorizado #### rowMeans que es vectorizado # evaluemos los tiempos de procesamiento para comparar # tenemos los siguientes datos datosLoop <- as.data.frame(cbind(runif(100000), runif(100000))) head(datosLoop, 10) # Primera forma: usando un for básico, función no vectorizada system.time( for (i in 1:nrow(datosLoop)) { datosLoop$mediaFor[i] <- mean(datosLoop[i,1], datosLoop[i,2]) } ) # Segunda forma: usando apply, función vectorizada system.time( datosLoop$mediaApply <- apply(datosLoop, 1, mean) ) # Tercera forma: usando rowMeans, función vectorizada system.time( datosLoop$mediaVectorized <- rowMeans(datosLoop[,c(1,2)]) ) # se puede apreciar que for es lentísima en compración con apply y rowMeans )