Hola tengo un problema con la salida de un archivo de 9 columnas que es producto de un muestreo de Gibbs de 4000 muestras. La idea es poder realizar un análisis con el paquete BOA, pero antes tengo que "rearmar" el archivo para tener 9 columnas por línea en vez de 7 como aparece, ya que las 2 últimas pasan a la segunda línea y así pasa con todo el archivo. Ejemplo: 0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 0.8251E-03 0.8805E-01 0.8347E-02 1.028 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 0.4462E-02 0.8564E-01 0.9126E-02 0.9451 ¿Existe alguna forma de que el R rediseñe el archivo de tal forma que las 2 columnas que pasaron a la siguiente línea pasen a la anterior o sino que se dé cuenta que tiene que leer 9 columnas por línea? Saludos y muchas gracias! Rodrigo. [[alternative HTML version deleted]]
Rod López Lo que usted envía si no entiendo mal no es un problema, ¿si cambia a un monitor grande se soluciona automáticamente?, ¿que posibilidad es que todo es una sola línea pero al visualizarla aparecen dos? O entendí todo mal. No se como es BOA, pero en gibbs luego de tener los resultados, yo supe utilizar as.data.frame, y continuar sin problemas. Javier Marcuzzi On vie, 2013-02-22 at 14:21 -0200, rod lopez wrote:> BOA,
Hola, ¿qué tal? Puedes leer todo el archivo como una cadena de números (tal vez en varios pasos) y luego utilizar matrix determinando el número de columnas (?matrix) para organizar tus datos como quieras. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 22 de febrero de 2013 17:21, rod lopez <rod99hare en gmail.com> escribió:> Hola tengo un problema con la salida de un archivo de 9 columnas que es > producto de un muestreo de Gibbs de 4000 muestras. > > La idea es poder realizar un análisis con el paquete BOA, pero antes tengo > que "rearmar" el archivo para tener 9 columnas por línea en vez de 7 como > aparece, ya que las 2 últimas pasan a la segunda línea y así pasa con todo > el archivo. > > Ejemplo: > > 0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 0.8251E-03 > 0.8805E-01 > 0.8347E-02 1.028 > 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 0.4462E-02 > 0.8564E-01 > 0.9126E-02 0.9451 > > > ¿Existe alguna forma de que el R rediseñe el archivo de tal forma que las 2 > columnas que pasaron a la siguiente línea pasen a la anterior o sino que se > dé cuenta que tiene que leer 9 columnas por línea? > > Saludos y muchas gracias! > > Rodrigo. > > [[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 >
Hola, Mira si este código te funciona: ###############################################################> dat.in <- readLines("rod.txt", n=-1)* #grabé las líneas en un fichero alestilo de lo que tendrás*> dat.in[1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 0.8251E-03 0.8805E-01" [2] " 0.8347E-02 1.028" [3] " 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 0.4462E-02 0.8564E-01" [4] " 0.9126E-02 0.9451"> library(stringr) > dat.end <- str_trim(dat.in)* #Quito los espacios en blanco al principio yfinal de las líneas*> dat.end[1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 0.8251E-03 0.8805E-01" [2] "0.8347E-02 1.028" [3] "0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 0.4462E-02 0.8564E-01" [4] "0.9126E-02 0.9451"> > j<-0 > dat.gd <- 0 > for(i in 1:length(dat.end)) {+ + if( length(unlist(str_split(dat.end[i], " "))) > 10 ) { + j <- j+1 + dat.gd[j] <- paste(dat.end[i], dat.end[i+1], sep= " ") + } else { next } + }> > > t.con<-textConnection(dat.gd) > dat.fin<-read.table(t.con, as.is=T) > close(t.con) > > dat.finV1 V2 V3 V4 V5 V6 V7 V8 V9 1 0.01576 0.2021 0.003830 0.1846 0.004018 0.0008251 0.08805 0.008347 1.0280 2 0.01357 0.3061 0.003747 0.1077 0.003989 0.0044620 0.08564 0.009126 0.9451 ####################################################################### Saludos, Carlos Ortega www.qualityexcellence.es El 22 de febrero de 2013 17:33, Marcuzzi, Javier Ruben < javier.ruben.marcuzzi@gmail.com> escribió:> Rod López > > Lo que usted envía si no entiendo mal no es un problema, ¿si cambia a un > monitor grande se soluciona automáticamente?, ¿que posibilidad es que > todo es una sola línea pero al visualizarla aparecen dos? O entendí todo > mal. > > No se como es BOA, pero en gibbs luego de tener los resultados, yo supe > utilizar as.data.frame, y continuar sin problemas. > > Javier Marcuzzi > > On vie, 2013-02-22 at 14:21 -0200, rod lopez wrote: > > BOA, > > _______________________________________________ > 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]]
Una versión más fácil y más rápida: datos<- scan(file="rod.txt" , sep=" ") datos <- matrix(datos, nc=9, byrow=T) Saludos, Marcelino El 2013-02-22 20:26, Carlos Ortega escribió:> Hola, > > Mira si este código te funciona: > > > ############################################################### >> dat.in <- readLines("rod.txt", n=-1)* #grabé las líneas en un >> fichero al > estilo de lo que tendrás* >> dat.in > [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 > 0.8251E-03 > 0.8805E-01" > [2] " 0.8347E-02 1.028" > > [3] " 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 > 0.4462E-02 0.8564E-01" > [4] " 0.9126E-02 0.9451" > >> library(stringr) >> dat.end <- str_trim(dat.in)* #Quito los espacios en blanco al >> principio y > final de las líneas* >> dat.end > [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 > 0.8251E-03 > 0.8805E-01" > [2] "0.8347E-02 1.028" > > [3] "0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 > 0.4462E-02 > 0.8564E-01" > [4] "0.9126E-02 0.9451" > >> >> j<-0 >> dat.gd <- 0 >> for(i in 1:length(dat.end)) { > + > + if( length(unlist(str_split(dat.end[i], " "))) > 10 ) { > + j <- j+1 > + dat.gd[j] <- paste(dat.end[i], dat.end[i+1], sep= " ") > + } else { next } > + } >> >> >> t.con<-textConnection(dat.gd) >> dat.fin<-read.table(t.con, as.is=T) >> close(t.con) >> >> dat.fin > V1 V2 V3 V4 V5 V6 V7 V8 > V9 > 1 0.01576 0.2021 0.003830 0.1846 0.004018 0.0008251 0.08805 0.008347 > 1.0280 > 2 0.01357 0.3061 0.003747 0.1077 0.003989 0.0044620 0.08564 0.009126 > 0.9451 > > ####################################################################### > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > El 22 de febrero de 2013 17:33, Marcuzzi, Javier Ruben < > javier.ruben.marcuzzi en gmail.com> escribió: > >> Rod López >> >> Lo que usted envía si no entiendo mal no es un problema, ¿si >> cambia a un >> monitor grande se soluciona automáticamente?, ¿que posibilidad es >> que >> todo es una sola línea pero al visualizarla aparecen dos? O >> entendí todo >> mal. >> >> No se como es BOA, pero en gibbs luego de tener los resultados, yo >> supe >> utilizar as.data.frame, y continuar sin problemas. >> >> Javier Marcuzzi >> >> On vie, 2013-02-22 at 14:21 -0200, rod lopez wrote: >> > BOA, >> >> _______________________________________________ >> 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 > > [[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-- MARCELINO DE LA CRUZ ROT Universidad Politecnica de Madrid
Hola, A mí no me funciona... :-( ####################> datos<- scan(file="rod.txt" , sep=" ")Read 52 items> datos[1] 0.0157600 NA 0.2021000 NA NA NA NA NA 0.0038300 NA [11] 0.1846000 NA NA NA NA NA 0.0040180 NA 0.0008251 0.0880500 [21] NA NA 0.0083470 NA NA 1.0280000 NA 0.0135700 NA 0.3061000 [31] NA NA NA NA NA 0.0037470 NA 0.1077000 NA NA [41] NA NA NA 0.0039890 NA 0.0044620 0.0856400 NA NA 0.0091260 [51] NA 0.9451000> datos <- matrix(datos, nc=9, byrow=T)Mensajes de aviso perdidos In matrix(datos, nc = 9, byrow = T) : la longitud de los datos [52] no es un submúltiplo o múltiplo del número de filas [6] en la matriz> datos[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [1,] 0.0157600 NA 0.2021 NA NA NA NA NA 0.003830 [2,] NA 0.18460 NA NA NA NA NA 0.004018 NA [3,] 0.0008251 0.08805 NA NA 0.008347 NA NA 1.028000 NA [4,] 0.0135700 NA 0.3061 NA NA NA NA NA 0.003747 [5,] NA 0.10770 NA NA NA NA NA 0.003989 NA [6,] 0.0044620 0.08564 NA NA 0.009126 NA 0.9451 0.015760 NA #################### Saludos, Carlos Ortega www.qualityexcellence.es El 22 de febrero de 2013 21:07, MARCELINO DE LA CRUZ ROT < marcelino.delacruz@upm.es> escribió:> Una versión más fácil y más rápida: > > datos<- scan(file="rod.txt" , sep=" ") > datos <- matrix(datos, nc=9, byrow=T) > > > Saludos, > > Marcelino > > > El 2013-02-22 20:26, Carlos Ortega escribió: > >> Hola, >> >> Mira si este código te funciona: >> >> >> ##############################**##############################**### >> >>> dat.in <- readLines("rod.txt", n=-1)* #grabé las líneas en un fichero al >>> >> estilo de lo que tendrás* >> >> dat.in >>> >> [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 >> 0.8251E-03 >> 0.8805E-01" >> [2] " 0.8347E-02 1.028" >> >> [3] " 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 >> 0.4462E-02 0.8564E-01" >> [4] " 0.9126E-02 0.9451" >> >> library(stringr) >>> dat.end <- str_trim(dat.in)* #Quito los espacios en blanco al principio >>> y >>> >> final de las líneas* >> >> dat.end >>> >> [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 >> 0.8251E-03 >> 0.8805E-01" >> [2] "0.8347E-02 1.028" >> >> [3] "0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 >> 0.4462E-02 >> 0.8564E-01" >> [4] "0.9126E-02 0.9451" >> >> >>> j<-0 >>> dat.gd <- 0 >>> for(i in 1:length(dat.end)) { >>> >> + >> + if( length(unlist(str_split(dat.**end[i], " "))) > 10 ) { >> + j <- j+1 >> + dat.gd[j] <- paste(dat.end[i], dat.end[i+1], sep= " ") >> + } else { next } >> + } >> >>> >>> >>> t.con<-textConnection(dat.gd) >>> dat.fin<-read.table(t.con, as.is=T) >>> close(t.con) >>> >>> dat.fin >>> >> V1 V2 V3 V4 V5 V6 V7 V8 V9 >> 1 0.01576 0.2021 0.003830 0.1846 0.004018 0.0008251 0.08805 0.008347 >> 1.0280 >> 2 0.01357 0.3061 0.003747 0.1077 0.003989 0.0044620 0.08564 0.009126 >> 0.9451 >> >> ##############################**##############################** >> ########### >> >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> >> >> El 22 de febrero de 2013 17:33, Marcuzzi, Javier Ruben < >> javier.ruben.marcuzzi@gmail.**com <javier.ruben.marcuzzi@gmail.com>> >> escribió: >> >> Rod López >>> >>> Lo que usted envía si no entiendo mal no es un problema, ¿si cambia a un >>> monitor grande se soluciona automáticamente?, ¿que posibilidad es que >>> todo es una sola línea pero al visualizarla aparecen dos? O entendí todo >>> mal. >>> >>> No se como es BOA, pero en gibbs luego de tener los resultados, yo supe >>> utilizar as.data.frame, y continuar sin problemas. >>> >>> Javier Marcuzzi >>> >>> On vie, 2013-02-22 at 14:21 -0200, rod lopez wrote: >>> > BOA, >>> >>> ______________________________**_________________ >>> R-help-es mailing list >>> R-help-es@r-project.org >>> https://stat.ethz.ch/mailman/**listinfo/r-help-es<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<https://stat.ethz.ch/mailman/listinfo/r-help-es> >> > > -- > MARCELINO DE LA CRUZ ROT > Universidad Politecnica de Madrid >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Reenvío porque no había mandado a toda la lista. Buenas, estoy acá con Rodrigo, puesto que somos colegas aunque trabajemos en cosas diferentes. La solución que aportó Carlos funciona. Todavía no he leído el código completamente para ver lo que hace cada función, pero me llamó la atención que funcionase directamente con el archivo original que sale del programa en cuestión, ya que es levemente diferente a los que colocó Rodrigo. 50050 9 0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 0.8251E-03 0.8805E-01 0.8347E-02 1.028 50100 9 0.1417E-01 0.3379 0.3223E-02 0.8510E-01 0.4129E-02 0.3190E-02 0.8401E-01 0.9298E-02 0.9365 50150 9 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 0.4462E-02 0.8564E-01 0.9126E-02 0.9451 Los "50xxx 9" son respectivamente numero de iteración y columna (que no son necesarios luego para posteriores análisis) y el resultado que devuelve el código de Carlos es justamente un data.frame sin esas dos columnas. Yo había solucionado pero con previo pasaje por alguna planilla para guardarla con algún separador. Luego lo levantas en R (a mi me gusta RStudio) y : ############################## ###################### b=as.vector(t(datos.ini)) # transpongo y transformo en vector el data.frame previamente importado c=subset(b,is.na(b)==F) # Elimino nos NA (que se generan en el tratamiento previo de una planilla de cálculo) d=matrix(c,4000,11, byrow=T) # sabiendo que son 4000 las líneas lo paso a una matriz datos.fin=as.data.frame(d[,-c(1:2)]) # quito las dos primeras columnas (iteración y nº de columnas) que no son interesantes ########################################################## Obviamente es más particular para el problema específico presentado y sin dudas es preferible la opción presentada por Carlos. Saludos y gracias! Fernando El 22 de febrero de 2013 17:26, Carlos Ortega <cof@qualityexcellence.es>escribió:> Hola, > > Mira si este código te funciona: > > > ############################################################### > > dat.in <- readLines("rod.txt", n=-1)* #grabé las líneas en un fichero al > estilo de lo que tendrás* > > dat.in > [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 0.8251E-03 > 0.8805E-01" > [2] " 0.8347E-02 1.028" > > [3] " 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 > 0.4462E-02 0.8564E-01" > [4] " 0.9126E-02 0.9451" > > > library(stringr) > > dat.end <- str_trim(dat.in)* #Quito los espacios en blanco al principio > y > final de las líneas* > > dat.end > [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 0.8251E-03 > 0.8805E-01" > [2] "0.8347E-02 1.028" > > [3] "0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 0.4462E-02 > 0.8564E-01" > [4] "0.9126E-02 0.9451" > > > > > j<-0 > > dat.gd <- 0 > > for(i in 1:length(dat.end)) { > + > + if( length(unlist(str_split(dat.end[i], " "))) > 10 ) { > + j <- j+1 > + dat.gd[j] <- paste(dat.end[i], dat.end[i+1], sep= " ") > + } else { next } > + } > > > > > > t.con<-textConnection(dat.gd) > > dat.fin<-read.table(t.con, as.is=T) > > close(t.con) > > > > dat.fin > V1 V2 V3 V4 V5 V6 V7 V8 V9 > 1 0.01576 0.2021 0.003830 0.1846 0.004018 0.0008251 0.08805 0.008347 1.0280 > 2 0.01357 0.3061 0.003747 0.1077 0.003989 0.0044620 0.08564 0.009126 0.9451 > ####################################################################### > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > > El 22 de febrero de 2013 17:33, Marcuzzi, Javier Ruben < > javier.ruben.marcuzzi@gmail.com> escribió: > > > Rod López > > > > Lo que usted envía si no entiendo mal no es un problema, ¿si cambia a un > > monitor grande se soluciona automáticamente?, ¿que posibilidad es que > > todo es una sola línea pero al visualizarla aparecen dos? O entendí todo > > mal. > > > > No se como es BOA, pero en gibbs luego de tener los resultados, yo supe > > utilizar as.data.frame, y continuar sin problemas. > > > > Javier Marcuzzi > > > > On vie, 2013-02-22 at 14:21 -0200, rod lopez wrote: > > > BOA, > > > > _______________________________________________ > > 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 > >[[alternative HTML version deleted]]
Con algunas modificaciones el código de Marcelino funciona correctamente: ##########################################################3 datos= scan(file="ejemplo.txt" , sep=" ") datos.pre=subset(datos, is.na(datos)==F) datos.fin= as.data.frame(matrix(datos.pre, nc=11, byrow=T)[,-c(1:2)]) head(datos.fin) ################################################# Adjunto un ejemplo de archivo tal cual sale del software usado. Saludos Fernando El 22 de febrero de 2013 18:32, Fernando Macedo <fermace en gmail.com>escribió:> Reenvío porque no había mandado a toda la lista. > > Buenas, estoy acá con Rodrigo, puesto que somos colegas aunque trabajemos > en cosas diferentes. > > La solución que aportó Carlos funciona. Todavía no he leído el código > completamente para ver lo que hace cada función, pero me llamó la atención > que funcionase directamente con el archivo original que sale del programa > en cuestión, ya que es levemente diferente a los que colocó Rodrigo. > > 50050 9 > > 0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 0.8251E-03 > 0.8805E-01 > 0.8347E-02 1.028 > 50100 9 > 0.1417E-01 0.3379 0.3223E-02 0.8510E-01 0.4129E-02 0.3190E-02 > 0.8401E-01 > 0.9298E-02 0.9365 > 50150 9 > > 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 0.4462E-02 > 0.8564E-01 > 0.9126E-02 0.9451 > > > Los "50xxx 9" son respectivamente numero de iteración y columna (que > no son necesarios luego para posteriores análisis) y el resultado que > devuelve el código de Carlos es justamente un data.frame sin esas dos > columnas. > > Yo había solucionado pero con previo pasaje por alguna planilla para > guardarla con algún separador. > > Luego lo levantas en R (a mi me gusta RStudio) y : > > ############################## > ###################### > b=as.vector(t(datos.ini)) # transpongo y transformo en vector el > data.frame previamente importado > > c=subset(b,is.na(b)==F) # Elimino nos NA (que se generan en el > tratamiento previo de una planilla de cálculo) > > d=matrix(c,4000,11, byrow=T) # sabiendo que son 4000 las líneas lo paso a > una matriz > > datos.fin=as.data.frame(d[,-c(1:2)]) # quito las dos primeras columnas > (iteración y nº de columnas) que no son interesantes > > ########################################################## > > Obviamente es más particular para el problema específico presentado y sin > dudas es preferible la opción presentada por Carlos. > > Saludos y gracias! > > > Fernando > > > El 22 de febrero de 2013 17:26, Carlos Ortega <cof en qualityexcellence.es>escribió: > >> Hola, >> >> >> Mira si este código te funciona: >> >> >> ############################################################### >> > dat.in <- readLines("rod.txt", n=-1)* #grabé las líneas en un fichero >> al >> estilo de lo que tendrás* >> > dat.in >> [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 >> 0.8251E-03 >> 0.8805E-01" >> [2] " 0.8347E-02 1.028" >> >> [3] " 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 >> 0.4462E-02 0.8564E-01" >> [4] " 0.9126E-02 0.9451" >> >> > library(stringr) >> > dat.end <- str_trim(dat.in)* #Quito los espacios en blanco al >> principio y >> final de las líneas* >> > dat.end >> [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 >> 0.8251E-03 >> 0.8805E-01" >> [2] "0.8347E-02 1.028" >> >> [3] "0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 >> 0.4462E-02 >> 0.8564E-01" >> [4] "0.9126E-02 0.9451" >> >> > >> > j<-0 >> > dat.gd <- 0 >> > for(i in 1:length(dat.end)) { >> + >> + if( length(unlist(str_split(dat.end[i], " "))) > 10 ) { >> + j <- j+1 >> + dat.gd[j] <- paste(dat.end[i], dat.end[i+1], sep= " ") >> + } else { next } >> + } >> > >> > >> > t.con<-textConnection(dat.gd) >> > dat.fin<-read.table(t.con, as.is=T) >> > close(t.con) >> > >> > dat.fin >> V1 V2 V3 V4 V5 V6 V7 V8 >> V9 >> 1 0.01576 0.2021 0.003830 0.1846 0.004018 0.0008251 0.08805 0.008347 >> 1.0280 >> 2 0.01357 0.3061 0.003747 0.1077 0.003989 0.0044620 0.08564 0.009126 >> 0.9451 >> ####################################################################### >> >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> >> >> El 22 de febrero de 2013 17:33, Marcuzzi, Javier Ruben < >> javier.ruben.marcuzzi en gmail.com> escribió: >> >> > Rod López >> > >> > Lo que usted envía si no entiendo mal no es un problema, ¿si cambia a un >> > monitor grande se soluciona automáticamente?, ¿que posibilidad es que >> > todo es una sola línea pero al visualizarla aparecen dos? O entendí todo >> > mal. >> > >> > No se como es BOA, pero en gibbs luego de tener los resultados, yo supe >> > utilizar as.data.frame, y continuar sin problemas. >> > >> > Javier Marcuzzi >> > >> > On vie, 2013-02-22 at 14:21 -0200, rod lopez wrote: >> > > BOA, >> > >> > _______________________________________________ >> > 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 >> >> [[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 >> >> >------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20130222/07b439f2/attachment.html> ------------ próxima parte ------------ 50050 9 0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 0.8251E-03 0.8805E-01 0.8347E-02 1.028 50100 9 0.1417E-01 0.3379 0.3223E-02 0.8510E-01 0.4129E-02 0.3190E-02 0.8401E-01 0.9298E-02 0.9365 50150 9 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 0.4462E-02 0.8564E-01 0.9126E-02 0.9451 50200 9 0.1461E-01 0.2491 0.5650E-02 0.1045 0.4214E-02 0.2177E-02 0.7706E-01 0.7883E-02 1.031 50250 9 0.1143E-01 0.2198 0.3780E-02 0.1280 0.4395E-02 0.2987E-02 0.9272E-01 0.6700E-02 1.019 50300 9 0.2028E-01 0.1376 0.3936E-02 0.1155 0.5733E-02 0.3910E-02 0.8899E-01 0.8811E-02 0.9528 50350 9 0.1396E-01 0.1796 0.4725E-02 0.1014 0.4071E-02 0.3589E-02 0.9865E-01 0.7984E-02 0.9842 50400 9 0.1653E-01 0.2141 0.4735E-02 0.1305 0.4627E-02 0.5925E-02 0.1372 0.8015E-02 0.9458 50450 9 0.1148E-01 0.2652 0.3694E-02 0.7782E-01 0.5615E-02 0.8070E-02 0.1506 0.6926E-02 0.9199
Buenos dias Fernando, Si eliminas sep = " " de scan(), te ahorras las dos lineas siguientes y el resultado es el mismo:> x <- scan(file = "test.txt")Read 99 items> matrix(x, ncol = 11, byrow = TRUE)Un saludo, Jorge.- 2013/2/23 Fernando Macedo <fermace@gmail.com>> Con algunas modificaciones el código de Marcelino funciona correctamente: > > ##########################################################3 > > datos= scan(file="ejemplo.txt" , sep=" ") > datos.pre=subset(datos, is.na(datos)==F) > datos.fin= as.data.frame(matrix(datos.pre, nc=11, byrow=T)[,-c(1:2)]) > head(datos.fin) > > ################################################# > > Adjunto un ejemplo de archivo tal cual sale del software usado. > > Saludos > > Fernando > > > > > El 22 de febrero de 2013 18:32, Fernando Macedo <fermace@gmail.com>escribió: > > Reenvío porque no había mandado a toda la lista. >> >> Buenas, estoy acá con Rodrigo, puesto que somos colegas aunque trabajemos >> en cosas diferentes. >> >> La solución que aportó Carlos funciona. Todavía no he leído el código >> completamente para ver lo que hace cada función, pero me llamó la atención >> que funcionase directamente con el archivo original que sale del programa >> en cuestión, ya que es levemente diferente a los que colocó Rodrigo. >> >> 50050 9 >> >> 0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 0.8251E-03 >> 0.8805E-01 >> 0.8347E-02 1.028 >> 50100 9 >> 0.1417E-01 0.3379 0.3223E-02 0.8510E-01 0.4129E-02 0.3190E-02 >> 0.8401E-01 >> 0.9298E-02 0.9365 >> 50150 9 >> >> 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 0.4462E-02 >> 0.8564E-01 >> 0.9126E-02 0.9451 >> >> >> Los "50xxx 9" son respectivamente numero de iteración y columna >> (que no son necesarios luego para posteriores análisis) y el resultado que >> devuelve el código de Carlos es justamente un data.frame sin esas dos >> columnas. >> >> Yo había solucionado pero con previo pasaje por alguna planilla para >> guardarla con algún separador. >> >> Luego lo levantas en R (a mi me gusta RStudio) y : >> >> ############################## >> ###################### >> b=as.vector(t(datos.ini)) # transpongo y transformo en vector el >> data.frame previamente importado >> >> c=subset(b,is.na(b)==F) # Elimino nos NA (que se generan en el >> tratamiento previo de una planilla de cálculo) >> >> d=matrix(c,4000,11, byrow=T) # sabiendo que son 4000 las líneas lo paso a >> una matriz >> >> datos.fin=as.data.frame(d[,-c(1:2)]) # quito las dos primeras columnas >> (iteración y nº de columnas) que no son interesantes >> >> ########################################################## >> >> Obviamente es más particular para el problema específico presentado y sin >> dudas es preferible la opción presentada por Carlos. >> >> Saludos y gracias! >> >> >> Fernando >> >> >> El 22 de febrero de 2013 17:26, Carlos Ortega <cof@qualityexcellence.es>escribió: >> >>> Hola, >>> >>> >>> Mira si este código te funciona: >>> >>> >>> ############################################################### >>> > dat.in <- readLines("rod.txt", n=-1)* #grabé las líneas en un fichero >>> al >>> estilo de lo que tendrás* >>> > dat.in >>> [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 >>> 0.8251E-03 >>> 0.8805E-01" >>> [2] " 0.8347E-02 1.028" >>> >>> [3] " 0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 >>> 0.4462E-02 0.8564E-01" >>> [4] " 0.9126E-02 0.9451" >>> >>> > library(stringr) >>> > dat.end <- str_trim(dat.in)* #Quito los espacios en blanco al >>> principio y >>> final de las líneas* >>> > dat.end >>> [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 0.4018E-02 >>> 0.8251E-03 >>> 0.8805E-01" >>> [2] "0.8347E-02 1.028" >>> >>> [3] "0.1357E-01 0.3061 0.3747E-02 0.1077 0.3989E-02 >>> 0.4462E-02 >>> 0.8564E-01" >>> [4] "0.9126E-02 0.9451" >>> >>> > >>> > j<-0 >>> > dat.gd <- 0 >>> > for(i in 1:length(dat.end)) { >>> + >>> + if( length(unlist(str_split(dat.end[i], " "))) > 10 ) { >>> + j <- j+1 >>> + dat.gd[j] <- paste(dat.end[i], dat.end[i+1], sep= " ") >>> + } else { next } >>> + } >>> > >>> > >>> > t.con<-textConnection(dat.gd) >>> > dat.fin<-read.table(t.con, as.is=T) >>> > close(t.con) >>> > >>> > dat.fin >>> V1 V2 V3 V4 V5 V6 V7 V8 >>> V9 >>> 1 0.01576 0.2021 0.003830 0.1846 0.004018 0.0008251 0.08805 0.008347 >>> 1.0280 >>> 2 0.01357 0.3061 0.003747 0.1077 0.003989 0.0044620 0.08564 0.009126 >>> 0.9451 >>> ####################################################################### >>> >>> Saludos, >>> Carlos Ortega >>> www.qualityexcellence.es >>> >>> >>> El 22 de febrero de 2013 17:33, Marcuzzi, Javier Ruben < >>> javier.ruben.marcuzzi@gmail.com> escribió: >>> >>> > Rod López >>> > >>> > Lo que usted envía si no entiendo mal no es un problema, ¿si cambia a >>> un >>> > monitor grande se soluciona automáticamente?, ¿que posibilidad es que >>> > todo es una sola línea pero al visualizarla aparecen dos? O entendí >>> todo >>> > mal. >>> > >>> > No se como es BOA, pero en gibbs luego de tener los resultados, yo supe >>> > utilizar as.data.frame, y continuar sin problemas. >>> > >>> > Javier Marcuzzi >>> > >>> > On vie, 2013-02-22 at 14:21 -0200, rod lopez wrote: >>> > > BOA, >>> > >>> > _______________________________________________ >>> > 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 >>> >>> >> > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Y si en vez de sep=" " pones sep="" no hay que hacer el procesado de los NA:> (datos= scan(file="ejemplo.txt" , sep=""))Read 33 items [1] 5.005e+04 9.000e+00 1.576e-02 2.021e-01 3.830e-03 1.846e-01 4.018e-03 8.251e-04 [9] 8.805e-02 8.347e-03 1.028e+00 5.010e+04 9.000e+00 1.417e-02 3.379e-01 3.223e-03 [17] 8.510e-02 4.129e-03 3.190e-03 8.401e-02 9.298e-03 9.365e-01 5.015e+04 9.000e+00 [25] 1.357e-02 3.061e-01 3.747e-03 1.077e-01 3.989e-03 4.462e-03 8.564e-02 9.126e-03 [33] 9.451e-01> (datos=as.data.frame(matrix(datos,nc=11, byrow=T)[,-c(1,2)]))V1 V2 V3 V4 V5 V6 V7 V8 V9 1 0.01576 0.2021 0.003830 0.1846 0.004018 0.0008251 0.08805 0.008347 1.0280 2 0.01417 0.3379 0.003223 0.0851 0.004129 0.0031900 0.08401 0.009298 0.9365 3 0.01357 0.3061 0.003747 0.1077 0.003989 0.0044620 0.08564 0.009126 0.9451 Saludos, Marcelino El 2013-02-22 22:35, Fernando Macedo escribió:> Con algunas modificaciones el código de Marcelino funciona > correctamente: > > ##########################################################3 > > datos= scan(file="ejemplo.txt" , sep=" ") > datos.pre=subset(datos, is.na [7](datos)==F) > datos.fin= as.data.frame(matrix(datos.pre, nc=11, byrow=T)[,-c(1:2)]) > head(datos.fin) > > ################################################# > > Adjunto un ejemplo de archivo tal cual sale del software usado. > > Saludos > > Fernando > > El 22 de febrero de 2013 18:32, Fernando Macedo <fermace en gmail.com> > escribió: > >> Reenvío porque no había mandado a toda la lista. >> >> Buenas, estoy acá con Rodrigo, puesto que somos colegas aunque >> trabajemos en cosas diferentes. >> >> La solución que aportó Carlos funciona. Todavía no he leído el >> código completamente para ver lo que hace cada función, pero me >> llamó la atención que funcionase directamente con el archivo >> original que sale del programa en cuestión, ya que es levemente >> diferente a los que colocó Rodrigo. >> >> 50050 9 >> >> 0.1576E-01 0.2021 0.3830E-02 0.1846 >> 0.4018E-02 0.8251E-03 0.8805E-01 >> >> 0.8347E-02 1.028 >> 50100 9 >> 0.1417E-01 0.3379 0.3223E-02 0.8510E-01 >> 0.4129E-02 0.3190E-02 0.8401E-01 >> 0.9298E-02 0.9365 >> 50150 9 >> >> 0.1357E-01 0.3061 0.3747E-02 0.1077 >> 0.3989E-02 0.4462E-02 0.8564E-01 >> >> 0.9126E-02 0.9451 >> >> Los "50xxx 9" son respectivamente numero de iteración y >> columna (que no son necesarios luego para posteriores análisis) y el >> resultado que devuelve el código de Carlos es justamente un >> data.frame sin esas dos columnas. >> >> Yo había solucionado pero con previo pasaje por alguna planilla >> para guardarla con algún separador. >> >> Luego lo levantas en R (a mi me gusta RStudio) y : >> >> ############################## >> ###################### >> b=as.vector(t(datos.ini)) # transpongo y transformo en vector el >> data.frame previamente importado >> >> c=subset(b,is.na [7](b)==F) # Elimino nos NA (que se generan en el >> tratamiento previo de una planilla de cálculo) >> >> d=matrix(c,4000,11, byrow=T) # sabiendo que son 4000 las líneas lo >> paso a una matriz >> >> datos.fin=as.data.frame(d[,-c(1:2)]) # quito las dos primeras >> columnas (iteración y nº de columnas) que no son interesantes >> >> ########################################################## >> >> Obviamente es más particular para el problema específico >> presentado y sin dudas es preferible la opción presentada por Carlos. >> >> Saludos y gracias! >> >> Fernando >> >> El 22 de febrero de 2013 17:26, Carlos Ortega >> <cof en qualityexcellence.es> escribió: >> >>> Hola, >>> >>> Mira si este código te funciona: >>> >>> ############################################################### >>> > dat.in [1] <- readLines("rod.txt", n=-1)* #grabé las líneas en >>> un fichero al >>> estilo de lo que tendrás* >>> > dat.in [1] >>> [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 >>> 0.4018E-02 0.8251E-03 >>> 0.8805E-01" >>> [2] " 0.8347E-02 1.028" >>> >>> [3] " 0.1357E-01 0.3061 0.3747E-02 0.1077 >>> 0.3989E-02 >>> 0.4462E-02 0.8564E-01" >>> [4] " 0.9126E-02 0.9451" >>> >>> > library(stringr) >>> > dat.end <- str_trim(dat.in [1])* #Quito los espacios en blanco al >>> principio y >>> final de las líneas* >>> > dat.end >>> [1] "0.1576E-01 0.2021 0.3830E-02 0.1846 >>> 0.4018E-02 0.8251E-03 >>> 0.8805E-01" >>> [2] "0.8347E-02 1.028" >>> >>> [3] "0.1357E-01 0.3061 0.3747E-02 0.1077 >>> 0.3989E-02 0.4462E-02 >>> 0.8564E-01" >>> [4] "0.9126E-02 0.9451" >>> >>> > >>> > j<-0 >>> > dat.gd [2] <- 0 >>> > for(i in 1:length(dat.end)) { >>> + >>> + if( length(unlist(str_split(dat.end[i], " "))) > 10 ) { >>> + j <- j+1 >>> + dat.gd [2][j] <- paste(dat.end[i], dat.end[i+1], sep= " ") >>> + } else { next } >>> + } >>> > >>> > >>> > t.con<-textConnection(dat.gd [2]) >>> > dat.fin<-read.table(t.con, as.is [3]=T) >>> > close(t.con) >>> > >>> > dat.fin >>> V1 V2 V3 V4 V5 >>> V6 V7 V8 V9 >>> 1 0.01576 0.2021 0.003830 0.1846 0.004018 0.0008251 0.08805 >>> 0.008347 1.0280 >>> 2 0.01357 0.3061 0.003747 0.1077 0.003989 0.0044620 0.08564 >>> 0.009126 0.9451 >>> >>> ####################################################################### >>> >>> Saludos, >>> Carlos Ortega >>> www.qualityexcellence.es [4] >>> >>> El 22 de febrero de 2013 17:33, Marcuzzi, Javier Ruben < >>> javier.ruben.marcuzzi en gmail.com> escribió: >>> >>> > Rod López >>> > >>> > Lo que usted envía si no entiendo mal no es un problema, ¿si >>> cambia a un >>> > monitor grande se soluciona automáticamente?, ¿que posibilidad >>> es que >>> > todo es una sola línea pero al visualizarla aparecen dos? O >>> entendí todo >>> > mal. >>> > >>> > No se como es BOA, pero en gibbs luego de tener los resultados, >>> yo supe >>> > utilizar as.data.frame, y continuar sin problemas. >>> > >>> > Javier Marcuzzi >>> > >>> > On vie, 2013-02-22 [5] at 14:21 -0200, rod lopez wrote: >>> > > BOA, >>> > >>> > _______________________________________________ >>> > R-help-es mailing list >>> > R-help-es en r-project.org >>> > https://stat.ethz.ch/mailman/listinfo/r-help-es [6] >>> > >>> >>> -- >>> Saludos, >>> Carlos Ortega >>> www.qualityexcellence.es [4] >>> >>> [[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 [6] > > > > Links: > ------ > [1] http://dat.in > [2] http://dat.gd > [3] http://as.is > [4] http://www.qualityexcellence.es > [5] tel:2013-02-22 > [6] https://stat.ethz.ch/mailman/listinfo/r-help-es > [7] http://is.na > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es-- MARCELINO DE LA CRUZ ROT Universidad Politecnica de Madrid