Lex B
2012-Sep-09 02:12 UTC
[R-es] Almacenar resultados de una iteracion for en un dataframe
Buenas noches, las sentencias de repeticion me han generado muchos problemas, en este caso, la idea es almacenar como filas de un data.frame los resultados de las funciones Lim.inf y Lim.sup, les agradezco su ayuda, el codigo que quiero correr es el siguiente, y lo hace bastante bien, pero no puedo ni visualizar y mucho menos trabajar sobre los resultados de estas dos funciones. Mi <- 134 sigma <- 37.841 n <- 30 sims <- 100 cont <- rep(0, sims) alfa <- 0.05 for(i in 1:sims) { x <- rnorm(n, Mi, sigma) Lim.inf <- (mean(x) - (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n)))) Lim.sup <- (mean(x) + (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n)))) if(Lim.inf < Mi && Mi < Lim.sup) {cont[i] <- 1} } sum(cont) / sims -- ALEXANDER BERNAL MUÑOZ U SANTO TOMAS - ESTADÍSTICA - BOGOTÁ [[alternative HTML version deleted]]
Fernando Macedo
2012-Sep-09 13:04 UTC
[R-es] Almacenar resultados de una iteracion for en un dataframe
En particular lo resolví de la siguiente manera: Mi <- 134 sigma <- 37.841 n <- 30 sims <- 100 cont <- rep(0, sims) alfa <- 0.05 *res=matrix(0,sims,2)* for(i in 1:sims) { x <- rnorm(n, Mi, sigma) Lim.inf <- (mean(x) - (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n)))) Lim.sup <- (mean(x) + (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n)))) if(Lim.inf < Mi && Mi < Lim.sup) {cont[i] <- 1} *res[i,1]=Lim.inf res[i,2]=Lim.sup* } sum(cont) / sims Le agregue una matriz que recogerá los resultados y por cada iteración ingresa un resultado en la línea correspondiente. De esa forma salva todos los valores, si desearas incluir solamente los que cumplan la condición que colocas deberías incluirlos en el if, creo. Puede haber otra opción más eficiente, de repente otros con mayor experiencia lo pueden comentar mejor. Saludos Fernando Macedo El 08/09/12 23:12, Lex B escribió:> Buenas noches, las sentencias de repeticion me han generado muchos > problemas, en este caso, la idea es almacenar como filas de un data.frame > los resultados de las funciones Lim.inf y Lim.sup, les agradezco su ayuda, > el codigo que quiero correr es el siguiente, y lo hace bastante bien, pero > no puedo ni visualizar y mucho menos trabajar sobre los resultados de estas > dos funciones. > > > Mi <- 134 > sigma <- 37.841 > n <- 30 > sims <- 100 > cont <- rep(0, sims) > alfa <- 0.05 > for(i in 1:sims) { > x <- rnorm(n, Mi, sigma) > Lim.inf <- (mean(x) - (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n)))) > Lim.sup <- (mean(x) + (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n)))) > if(Lim.inf < Mi && Mi < Lim.sup) > {cont[i] <- 1} > } > sum(cont) / sims > > > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es[[alternative HTML version deleted]]
Carlos Ortega
2012-Sep-09 20:07 UTC
[R-es] Almacenar resultados de una iteracion for en un dataframe
Hola, En la misma línea de la solución que ya te han proporcionado. Incluyo el código añadido en rojo además de un breve comentario con las instrucciones básicas a replicar en casos similares. #################################### Mi <- 134 sigma <- 37.841 n <- 30 sims <- 100 cont <- rep(0, sims) alfa <- 0.05 #Inicializar y dimensionar el data.frame donde se almacenarán los resultados. #El dimensionar no es estrictamente necesario, pero si se quieren modificar data.frames grandes ayuda. resul.df <- data.frame(lim.inf=rep(0,sims), lim.sup=rep(0,sims)) for(i in 1:sims) { x <- rnorm(n, Mi, sigma) Lim.inf <- (mean(x) - (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n)))) Lim.sup <- (mean(x) + (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n)))) #Incluyo en cada iteración el valor de Lim.inf y Lim.sup en una nueva fila del data.frame. resul.df$lim.inf[i] <- Lim.inf resul.df$lim.sup[i] <- Lim.sup if(Lim.inf < Mi && Mi < Lim.sup) {cont[i] <- 1} } sum(cont) / sims #################################### Saludos, Carlos Ortega www.qualityexcellence.es El 9 de septiembre de 2012 04:12, Lex B <bernalm.alexander@gmail.com>escribió:> Buenas noches, las sentencias de repeticion me han generado muchos > problemas, en este caso, la idea es almacenar como filas de un data.frame > los resultados de las funciones Lim.inf y Lim.sup, les agradezco su ayuda, > el codigo que quiero correr es el siguiente, y lo hace bastante bien, pero > no puedo ni visualizar y mucho menos trabajar sobre los resultados de estas > dos funciones. > > > Mi <- 134 > sigma <- 37.841 > n <- 30 > sims <- 100 > cont <- rep(0, sims) > alfa <- 0.05 > for(i in 1:sims) { > x <- rnorm(n, Mi, sigma) > Lim.inf <- (mean(x) - (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n)))) > Lim.sup <- (mean(x) + (qt(1-alfa / 2, n-1) * (sd(x) / sqrt(n)))) > if(Lim.inf < Mi && Mi < Lim.sup) > {cont[i] <- 1} > } > sum(cont) / sims > > > -- > > ALEXANDER BERNAL MUÑOZ > U SANTO TOMAS - ESTADÍSTICA - BOGOTÁ > > [[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]]