Eva Prieto Castro
2012-May-28 09:52 UTC
[R-es] Formato individualizado a las columnas de un data.frame
Buenos días, ¿Qué tal?. Para dar formato (justificación) a una columna de un data.frame utilizo el siguiente mecanismo: format(df[, 1], justify="left") Si quiero particularizar el valor de justify para cada columna, ¿tengo que ejecutar esa línea por cada columna o puedo indicar un vector con los diferentes valores de justify para que los aplique al data.frame?. No he encontrado el modo de hacerlo, pero me parece extraño que no exista manera posible sin necesidad de ir columna por columna. Gracias. Eva [[alternative HTML version deleted]]
Carlos Ortega
2012-May-28 12:18 UTC
[R-es] Formato individualizado a las columnas de un data.frame
Hola Eva, Te habíamos planteado en la lista (lo hizo Jorge) el poder ver parte del código que utilizas para realizar este formato, seguramente haya posibilidades de optimizarlo. Sobre la duda que planteas, la función es lo que hace. Otra alternativas nuevas: A) la tabla la construyeras con la función sprintf() que permite precisar el formato con gran nivel de detalle: número de decimales, justificación, etc, etc... Sí, para cada tipo de tabla que generes tendrías que precisar una salida diferente dentro de sprintf() pero vaya, sí que podrías utilizarla de forma sencilla sobre una lista o sobre los elementos de un data.frame. B) Yendo un poco más lejos y creo que todavía no te lo hemos sugerido es que directamente veas cómo está construida write.table() y la modifiques a tu gusto... Saludos, Carlos Ortega www.qualityexcellence.es El 28 de mayo de 2012 11:52, Eva Prieto Castro <evapcastro@yahoo.es>escribió:> Buenos días, > > ¿Qué tal?. > > Para dar formato (justificación) a una columna de un data.frame utilizo el > siguiente mecanismo: > > format(df[, 1], justify="left") > > Si quiero particularizar el valor de justify para cada columna, ¿tengo que > ejecutar esa línea por cada columna o puedo indicar un vector con los > diferentes valores de justify para que los aplique al data.frame?. No he > encontrado el modo de hacerlo, pero me parece extraño que no exista manera > posible sin necesidad de ir columna por columna. > > Gracias. > > Eva > > [[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]]
Jorge I Velez
2012-May-28 13:04 UTC
[R-es] Formato individualizado a las columnas de un data.frame
Hola Eva, Podrias hacer lo que necesitas utilizando la funcion mapply() o creando tu propia funcion. Cuantas columnas tiene tu data.frame()? Saludos, Jorge.- 2012/5/28 Eva Prieto Castro <>> Buenos días, > > ¿Qué tal?. > > Para dar formato (justificación) a una columna de un data.frame utilizo el > siguiente mecanismo: > > format(df[, 1], justify="left") > > Si quiero particularizar el valor de justify para cada columna, ¿tengo que > ejecutar esa línea por cada columna o puedo indicar un vector con los > diferentes valores de justify para que los aplique al data.frame?. No he > encontrado el modo de hacerlo, pero me parece extraño que no exista manera > posible sin necesidad de ir columna por columna. > > Gracias. > > Eva > > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Eva Prieto Castro
2012-May-29 07:39 UTC
[R-es] Formato individualizado a las columnas de un data.frame
Hola, ¿qué tal? Os envío adjunto el código y el fichero de resultados, el cual sigue distando mucho de lo que quiero conseguir, pues como podéis comprobar la cabecera no aparece centrada respecto a las columnas del cuerpo del data.frame. Gracias. Eva --- El lun, 28/5/12, Carlos Ortega <cof en qualityexcellence.es> escribió: De: Carlos Ortega <cof en qualityexcellence.es> Asunto: Re: [R-es] Formato individualizado a las columnas de un data.frame Para: "Eva Prieto Castro" <evapcastro en yahoo.es> CC: r-help-es en r-project.org Fecha: lunes, 28 de mayo, 2012 14:18 Hola Eva, Te habíamos planteado en la lista (lo hizo Jorge) el poder ver parte del código que utilizas para realizar este formato, seguramente haya posibilidades de optimizarlo. Sobre la duda que planteas, la función es lo que hace. Otra alternativas nuevas:A) la tabla la construyeras con la función sprintf() que permite precisar el formato con gran nivel de detalle: número de decimales, justificación, etc, etc... Sí, para cada tipo de tabla que generes tendrías que precisar una salida diferente dentro de sprintf() pero vaya, sí que podrías utilizarla de forma sencilla sobre una lista o sobre los elementos de un data.frame. B) Yendo un poco más lejos y creo que todavía no te lo hemos sugerido es que directamente veas cómo está construida write.table() y la modifiques a tu gusto... Saludos,Carlos Ortegawww.qualityexcellence.es El 28 de mayo de 2012 11:52, Eva Prieto Castro <evapcastro en yahoo.es> escribió: Buenos días, ¿Qué tal?. Para dar formato (justificación) a una columna de un data.frame utilizo el siguiente mecanismo: format(df[, 1], justify="left") Si quiero particularizar el valor de justify para cada columna, ¿tengo que ejecutar esa línea por cada columna o puedo indicar un vector con los diferentes valores de justify para que los aplique al data.frame?. No he encontrado el modo de hacerlo, pero me parece extraño que no exista manera posible sin necesidad de ir columna por columna. Gracias. Eva [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es -- Saludos, Carlos Ortega www.qualityexcellence.es ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120529/f0ee2fc1/attachment.html> ------------ próxima parte ------------ An embedded and charset-unspecified text was scrubbed... Name: lastsave.txt URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120529/f0ee2fc1/attachment.txt> ------------ próxima parte ------------ An embedded and charset-unspecified text was scrubbed... Name: Result.txt URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120529/f0ee2fc1/attachment-0001.txt>
Eva Prieto Castro
2012-May-29 17:44 UTC
[R-es] Formato individualizado a las columnas de un data.frame
Hola, ¿qué tal? ¿Necesitáis alguna explicación adicional o comentarios sobre el código?. Yo sigo buscando una solución al asunto, pero no la hallo... Saludos Eva --- El mar, 29/5/12, Eva Prieto Castro <evapcastro@yahoo.es> escribió: De: Eva Prieto Castro <evapcastro@yahoo.es> Asunto: Re: [R-es] Formato individualizado a las columnas de un data.frame Para: "Carlos Ortega" <cof@qualityexcellence.es> CC: r-help-es@r-project.org Fecha: martes, 29 de mayo, 2012 09:39 Hola, ¿qué tal? Os envío adjunto el código y el fichero de resultados, el cual sigue distando mucho de lo que quiero conseguir, pues como podéis comprobar la cabecera no aparece centrada respecto a las columnas del cuerpo del data.frame. Gracias. Eva --- El lun, 28/5/12, Carlos Ortega <cof@qualityexcellence.es> escribió: De: Carlos Ortega <cof@qualityexcellence.es> Asunto: Re: [R-es] Formato individualizado a las columnas de un data.frame Para: "Eva Prieto Castr es, 28 de mayo, 2012 14:18 Hola Eva, Te habíamos planteado en la lista (lo hizo Jorge) el poder ver parte del código que utilizas para realizar este formato, seguramente haya posibilidades de optimizarlo. Sobre la duda que planteas, la función es lo que hace. Otra alternativas nuevas: A) la tabla la construyeras con la función sprintf() que permite precisar el formato con gran nivel de detalle: número de decimales, justificación, etc, etc... Sí, para cada tipo de tabla que generes tendrías que precisar una salida diferente dentro de sprintf() pero vaya, sí que podrías utilizarla de forma sencilla sobre una lista o sobre los elementos de un data.frame. B) Yendo un poco más lejos y creo que todavía no te lo hemos sugerido es que directamente veas cómo está construida write.table() y la modifiques a tu gusto... Saludos, Carlos Ortega www.qualityexcellence.es El 28 de mayo de 2012 11:52, Eva Prieto Castro < Buenos días, ¿Qué tal?. Para dar formato (justificación) a una columna de un data.frame utilizo el siguiente mecanismo: format(df[, 1], justify="left") Si quiero particularizar el valor de justify para cada columna, ¿tengo que ejecutar esa línea por cada columna o puedo indicar un vector con los diferentes valores de justify para que los aplique al data.frame?. No he encontrado el modo de hacerlo, pero me parece extraño que no exista manera posible sin necesidad de ir columna por columna. Gracias. Eva [[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 -----Adjunto en línea a continuación----- _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]
Eva Prieto Castro
2012-May-29 20:35 UTC
[R-es] Formato individualizado a las columnas de un data.frame
Hola! Lo he conseguido! Estaba calculando mal la longitud de la línea separadora, aparte de realizar algunas acciones innecesarias... alineacion <- c("left", "centre", "centre", "centre", "centre") for (i in 1:(dim(dfRes)[2])) { maxLen <- max(max(as.vector(nchar(dfRes[,i]))), nchar(names(dfRes)[i])) dfRes[,i] <- format(dfRes[,i], width=maxLen, justify=alineacion[i]) names(dfRes)[i] <- format(names(dfRes)[i], width=maxLen, justify=alineacion[i]) } cab <- paste0(names(dfRes), sep="\t", collapse='''') # Calculo la longitud que ha de tener la línea separadora long.linea <-sum(8*ceiling(nchar(names(dfRes))/8)) linea.sep <- paste(rep(''_'', long.linea), collapse='''') write(linea.sep,file="Result.txt", append=FALSE, sep="\n") write(cab,file="Result.txt", append=TRUE, sep="\n") write(linea.sep,file="Result.txt", append=TRUE, sep="\n") write.table(dfRes,file="Result.txt", append=TRUE, quote=FALSE, sep="\t",row.names=FALSE, col.names=FALSE) Un saludo. Eva --- El mar, 29/5/12, Eva Prieto Castro <evapcastro@yahoo.es> escribió: De: Eva Prieto Castro <evapcastro@yahoo.es> Asunto: Re: [R-es] Formato individualizado a las columnas de un data.frame Para: "Carlos Ortega" <cof@qualityexcellence.es> CC: r-help-es@r-project.org Fecha: martes, 29 de mayo, 2012 09:39 Hola, ¿qué tal? Os envío adjunto el código y el fichero de resultados, el cual sigue distando mucho de lo que quiero conseguir, pues como podéis comprobar la cabecera no aparece centrada respecto a las columnas del cuerpo del data.frame. Gracias. Eva --- El lun, 28/5/12, Carlos Ortega <cof@qualityexcellence.es> escribió: De: Carlos Ortega <cof@qualityexcellence.es> Asunto: Re: [R-es] Formato individualizado a las columnas de un data.frame Para: "Eva Prieto Castr es, 28 de mayo, 2012 14:18 Hola Eva, Te habíamos planteado en la lista (lo hizo Jorge) el poder ver parte del código que utilizas para realizar este formato, seguramente haya posibilidades de optimizarlo. Sobre la duda que planteas, la función es lo que hace. Otra alternativas nuevas: A) la tabla la construyeras con la función sprintf() que permite precisar el formato con gran nivel de detalle: número de decimales, justificación, etc, etc... Sí, para cada tipo de tabla que generes tendrías que precisar una salida diferente dentro de sprintf() pero vaya, sí que podrías utilizarla de forma sencilla sobre una lista o sobre los elementos de un data.frame. B) Yendo un poco más lejos y creo que todavía no te lo hemos sugerido es que directamente veas cómo está construida write.table() y la modifiques a tu gusto... Saludos, Carlos Ortega www.qualityexcellence.es El 28 de mayo de 2012 11:52, Eva Prieto Castro < Buenos días, ¿Qué tal?. Para dar formato (justificación) a una columna de un data.frame utilizo el siguiente mecanismo: format(df[, 1], justify="left") Si quiero particularizar el valor de justify para cada columna, ¿tengo que ejecutar esa línea por cada columna o puedo indicar un vector con los diferentes valores de justify para que los aplique al data.frame?. No he encontrado el modo de hacerlo, pero me parece extraño que no exista manera posible sin necesidad de ir columna por columna. Gracias. Eva [[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 -----Adjunto en línea a continuación----- _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]]