Hola, Este otro ejemplo a partir de la idea de Jorge, de cómo procesar toda la tabla que tienes:
> #Creo un data.frame de ejemplo todo con letras > vtmp <- as.data.frame(lapply(letters,function(x) { rep(x,each=50) })) > names(vtmp) <- paste("col",LETTERS,sep="") > head(vtmp) colA colB colC colD colE colF colG colH colI colJ colK colL colM colN colO colP colQ colR colS colT colU colV colW colX colY colZ 1 a b c d e f g h i j k l m n o p q r s t u v w x y z 2 a b c d e f g h i j k l m n o p q r s t u v w x y z 3 a b c d e f g h i j k l m n o p q r s t u v w x y z 4 a b c d e f g h i j k l m n o p q r s t u v w x y z 5 a b c d e f g h i j k l m n o p q r s t u v w x y z 6 a b c d e f g h i j k l m n o p q r s t u v w x y z > > #Los números de columnas impares de mi data.frame > matIndex <- seq(1, dim(vtmp)[2], by=2) > > #Función para juntar dos columnas (idea de Jorge) > mifun <- function(x,y) c(rbind(as.vector(vtmp[,x]),as.vector(vtmp[,y]))) > > #Resulado aplicando mapply. Coge dos columnas consecutivas y las alterna > #y así de forma iterativa para cada una de las columnas que indica "matIndex" y la siguiente columna "matIndex+1" > resultado <- mapply(mifun,matIndex, matIndex+1) > head(kk) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [1,] "a" "c" "e" "g" "i" "k" "m" "o" "q" "s" "u" "w" "y" [2,] "b" "d" "f" "h" "j" "l" "n" "p" "r" "t" "v" "x" "z" [3,] "a" "c" "e" "g" "i" "k" "m" "o" "q" "s" "u" "w" "y" [4,] "b" "d" "f" "h" "j" "l" "n" "p" "r" "t" "v" "x" "z" [5,] "a" "c" "e" "g" "i" "k" "m" "o" "q" "s" "u" "w" "y" [6,] "b" "d" "f" "h" "j" "l" "n" "p" "r" "t" "v" "x" "z" > Saludos, Carlos Ortega www.qualityexcellence.es El 24 de febrero de 2015, 14:10, Fernando Macedo <ferm...@gmail.com> escribió: > Excelente! Ahora corre muy rápido. No conocía ese método, creo que me va a > resultar muy útil. > > Muchas gracias y saludos. > > Fernando Macedo > > El 24/02/15 a las 10:51, Jorge I Velez escribió: > > Fernando, > > Podrias intentar > > R> a <- rep('a', 5) > R> b <- rep('b', 5) > R> a > [1] "a" "a" "a" "a" "a" > R> b > [1] "b" "b" "b" "b" "b" > R> c(rbind(a, b)) > [1] "a" "b" "a" "b" "a" "b" "a" "b" "a" "b" > > Saludos, > Jorge.- > > > 2015-02-24 23:49 GMT+11:00 Fernando Macedo <ferm...@gmail.com>: > > > Buenas a todos. > > Relato el problema: > > > > - tengo un archivo de 316 columnas por 562000 filas (aprox.). > > - esas 316 columnas representan 158 sujetos, o sea dos columnas por cada > > individuo conteniendo información que debe ser condensada en una sola. > > > > Lo que necesito es ir tomando las dos columnas de cada individuo e > > intercalar los elementos de los vectores formando uno solo. > > > > Ejemplificando sería algo así: > > > > > a > > [1] "a" "a" "a" "a" "a" > > > b > > [1] "b" "b" "b" "b" "b" > > > c > > [1] "a" "b" "a" "b" "a" "b" "a" "b" "a" "b" > > > > > > Estoy haciendo con un loop for pero es realmente muy lento. He buscado > por > > algún paquete que ya lo haga directamente pero no he tenido mucho éxito. > Me > > imagino que con sapply o apply pueda ser mucho más efectivo pero me ha > > resultado complicado para entender la sintaxis de estas funciones cuando > > involucra más de un objeto (vector, matriz, etc...). > > > > Desde ya agradezco las sugerencias que puedan verter sobre este problema. > > > > -- > > Fernando Macedo > > > > [[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]] > > _______________________________________________ > 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