2011-08-12 7 views
5

Tengo un archivo delimitado por tabuladores que tiene este aspecto:lectura de una tabla "volteado" en un hoja.de.datos correctamente

AG-AG AG-CA AT-AA AT-AC AT-AG ... 
0.0142180094786 0.009478672985781 0.0142180094786 0.4218009478672 ... 

Cuando leí esto en R utilizando read.table me sale:

nc.tab <- read.table("./percent_splice_pair.tab", sep="\t", header=TRUE) 
    AG.AG  AG.CA  AT.AA  AT.AC  AT.AG ... 
1 0.01421801 0.009478673 0.01421801 0.4218009 0.03317536 ... 

esto se siente algo torpe para mí, porque soy mucho más acostumbrado a trabajar con los datos si es así:

splice.pair counts 
AG.AG   0.01421801 
AG.CA   0.009478673 
AT.AA   0.01421801 
AT.AG   0.03317536 
...   ... 

hasta el momento, mi los intentos de intentar forzar la tabla en un marco de datos como este (usando data.frame()) han causado resultados muy extraños. No puedo resolver cómo obtener cada fila de la tabla que tengo como una lista simple, que luego puedo usar como columnas para el marco de datos. colnames(nc.tab) funciona para los encabezados pero cosas como nc.tab[1,] me dan los encabezados de tabla + otra vez. ¿Me estoy perdiendo algo obvio?

--edit--

Mientras @ respuesta de Andrie me dio la hoja.de.datos que necesitaba, que tenía que hacer un poco de trabajo extra para coerse los valores de los recuentos en valores numéricos para que pudieran trabajar correctamente en ggplot:

nc.tab <- read.table("./percent_splice_pair.tab", header=FALSE, sep="\t") 
nc.mat <- t(as.matrix(nc.tab)) 
sp <- as.character(nc.tab[,2]) 
c <- as.numeric(as.character(nc.tab[,2])) 
nc.dat <- data.frame(Splice.Pair=sp, count=c) 

    Splice.Pair  count 
1  AG-AG 0.014218009 
2  AG-CA 0.009478673 
3  AT-AA 0.014218009 
4  AT-AC 0.421800948 
5  AT-AG 0.033175355 

Respuesta

9

Es necesario lo siguiente para leer y formar de nuevo sus datos en la forma que desee:

  • uso read.table con el parámetro header=FALSE
  • luego transponer los datos con la función t()
  • cambiar el nombre de las columnas

Aquí está el código:

x <- read.table(..., header=FALSE) 
df <- as.data.frame(t(x)) 
names(df) <- c("splice.pair", "counts") 
df 

    splice.pair   counts 
V1  AG-AG 0.0142180094786 
V2  AG-CA 0.009478672985781 
V3  AT-AA 0.0142180094786 
V4  AT-AC 0.4218009478672 
+0

Sí, la magia que me faltaba era el método de transposición de una matriz. ¡Gracias! – MattLBeck

Cuestiones relacionadas