Hola, Puedes hacerlo con data.table, salvo el detalle del "if". Suponiendo que tu data.frame es de esta forma:
tu_df <- data.frame( hrs_trab = ... , coste_hr = ...., deuda =...., periodo = ) Mencionas hacer una agrupación por "período" pero no lo incluyes en tu bucle. Dependiendo del tipo de este periodo si es una fecha, mes, semana, etc. habría que detallarlo un poco más. Pero con esa estructura con data.table es bastante inmediato: library(data.table tu_dt <- as.data.table(tu_df) tu_dt[ , Ingreso := hrs_trab * coste_hr - deuda, by="periodo"] Y para el "if", lo que haces en el bucle es sumar 1000 unidades cuando el valor es negativo. No sé si te valdría si al final del cálculo del data.table anterior, al valor negativo de "Ingreso" le sumaras las 1000 unidades de esta forma: tu_dt$Ingreso <- ifelse(tu_dt$Ingreso < 0 , tu_dt$Ingreso + 1000, tu_dt$Ingreso) Para acertar algo más a la primera, convendría que para este tipo de casos, incluyeras una parte de la matriz/data.frame con el que trabajas... Saludos, Carlos Ortega www.qualityexcellence.es El 14 de agosto de 2016, 14:00, Sebastián Kruk <residuo.so...@gmail.com> escribió: > Estimados usuarios de R: > > Yo tengo una matriz en que cada fila es una persona y las filas > corresponden al ingreso, horas trabajadas, salario por hora y deudas. > > El ingreso es igual a las horas trabajadas por el salario por hora menos > deudas. > > Me interesa guardar por individuo por cada período el ingreso. > > Yo hacía: > > for t in 2:200 { > for i in 1 in 1:10 { > M[i,Y]=M[i,S]*M[i,H]-M[i,D]+M[i,Y] > if M[i,Y]<1000 { > M[i,D] = 1000 + M[i,D] > } > } > Ing[t]=M[,Y] > } > > En lo anterior Y es ingreso, H son las horas trabajadas, S es el salario y > D las deudas. > > ¿Hay alguna forma de optimizarlo eliminando los for y el if? > > Desde ya muchas gracias. > > Sebastián. > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es