Gracias, Carlos.

Habia pensado en algo similar usando sapply():

sapply(seq(1, ncol(vtmp), by = 2), function(i) c(rbind(as.character(vtmp[,
i]), as.character(vtmp[, i+1]))))

Dependiendo de la dimension de los datos, quizas mapply() sea mas eficiente
que sapply().

Saludos cordiales,
Jorge.-


2015-02-25 1:01 GMT+11:00 Carlos Ortega <c...@qualityexcellence.es>:

> 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

Responder a