<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    De vuelta a agradecer a ambos, porque justo ahora estaba de nuevo
    con un problema parecido y he vuelto a consultar el correo. <br>
    <br>
    Muchas gracias por su ayuda! <br>
    <br>
    Saludos <br>
    <br>
    <pre class="moz-signature" cols="72">DMTV Fernando Macedo
Asistente del área Mejoramiento Genético
Facultad de Veterinaria - UdelarR - Uruguay
Tel: 26284291
Cel.: 098596947
<a class="moz-txt-link-abbreviated" href="mailto:fermace@gmail.com">fermace@gmail.com</a></pre>
    <div class="moz-cite-prefix">El 24/02/15 a las 19:28, Carlos Ortega
      escibió:<br>
    </div>
    <blockquote
cite="mid:CAOKbq8j1e_hBfX796iyWd8hgcrod0Jjev+FehqX6m9KqLG06zQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_default"
          style="font-family:verdana,sans-serif">Hola,<br>
          <br>
        </div>
        <div class="gmail_default"
          style="font-family:verdana,sans-serif">He querido comprobar
          los tiempos proceso que se obtendrían utilizando una u otra
          opción (mapply vs. sapply) para un conjunto equivalente en
          tamaño al que Fernando planteaba (data.frame de 316 columnas y
          562000 filas).<br>
          <br>
        </div>
        <div class="gmail_default"
          style="font-family:verdana,sans-serif">Y estos son los
          resultados:<br>
          <ul>
            <li>En mi máquina MacAir (4GB RAM - 1.3GHz Intel Core i5) :</li>
            <ul>
              <li>con mapply obtengo tiempos de 1.4 minutos.</li>
              <li>con sapply se me bloqueaba RStudio.</li>
            </ul>
          </ul>
        </div>
        <div class="gmail_default"
          style="font-family:verdana,sans-serif">En ambos casos,
          iniciaba sesión "limpia" de RStudio.<br>
          <br>
        </div>
        <div class="gmail_default"
          style="font-family:verdana,sans-serif">Para no tener problemas
          de máquina he probado ambos casos en la plataforma "Microsoft
          Azure Machine Learning" y los resultados son los siguientes:<br>
          <ul>
            <li>mapply: 34.862 segundos</li>
            <li>sapply: 35.057 segundos<br>
            </li>
          </ul>
        </div>
        <div class="gmail_default"
          style="font-family:verdana,sans-serif">Sobre la plataforma de
          Microsoft, he vuelto a ver un comportamiento raro con la
          opción de sapply, hasta que he cambiado en la función
          "as.character()" por "as.vector()" y es cuando ha funcionado
          sin problemas con los tiempos indicados.<br>
          <br>
        </div>
        <div class="gmail_default"
          style="font-family:verdana,sans-serif">Adjunto capturas de
          pantalla del código ejecutado en cada caso y los tiempos de
          ejecución que proporciona la plataforma.<br>
        </div>
        <div class="gmail_default"
          style="font-family:verdana,sans-serif">En ambos casos, los
          tiempos incluyen la generación del data.frame equivalente
          (562000 x 316).<br>
        </div>
        <div class="gmail_default"
          style="font-family:verdana,sans-serif"><br>
          <br>
          <br>
          <b>OPCIÓN A (MAPPLY)</b><br>
          <br>
          <img alt="Imágenes integradas 2"
            src="cid:part1.00000809.03060906@gmail.com" height="482"
            width="530"><br>
          <img alt="Imágenes integradas 6"
            src="cid:part2.09090009.03050202@gmail.com" height="355"
            width="473"><br>
          <br>
          <br>
          <br>
          <br>
        </div>
        <div class="gmail_default"
          style="font-family:verdana,sans-serif"><b>OPCIÓN B (SAPPLY)</b><br>
        </div>
        <div class="gmail_default"
          style="font-family:verdana,sans-serif"><br>
          <br>
          <img alt="Imágenes integradas 1"
            src="cid:part3.00010401.01040005@gmail.com" height="552"
            width="543"><br>
          <br>
          <img alt="Imágenes integradas 5"
            src="cid:part4.00060409.09020300@gmail.com" height="433"
            width="558"><br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">El 24 de febrero de 2015, 17:12,
          Fernando Macedo <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:fermace@gmail.com" target="_blank">fermace@gmail.com</a>></span>
          escribió:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div dir="ltr">
              <div bgcolor="#FFFFFF" text="#000000">
                <div>Muchas gracias a los dos, los ejemplos de uso de
                  las funciones *apply siempre son bienvenidos. <br>
                  <br>
                  Saludos <br>
                  <br>
                  <pre cols="72">Fernando Macedo
</pre>
                  El 24/02/15 a las 12:12, Jorge I Velez escribió:<br>
                </div>
                <div>
                  <div class="h5">
                    <blockquote type="cite">
                      <div dir="ltr">
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small">Gracias,

                          Carlos.</div>
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small"><br>
                        </div>
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small">Habia

                          pensado en algo similar usando sapply():</div>
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small"><br>
                        </div>
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small">sapply(seq(1,

                          ncol(vtmp), by = 2), function(i)
                          c(rbind(as.character(vtmp[, i]),
                          as.character(vtmp[, i+1]))))<br>
                        </div>
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small"><br>
                        </div>
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small">Dependiendo

                          de la dimension de los datos, quizas mapply()
                          sea mas eficiente que sapply().</div>
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small"><br>
                        </div>
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small">Saludos

                          cordiales,</div>
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small">Jorge.-</div>
                        <div class="gmail_default"
                          style="font-family:arial,helvetica,sans-serif;font-size:small"><br>
                        </div>
                        <div class="gmail_default"><br>
                        </div>
                        <div class="gmail_extra">
                          <div class="gmail_quote">2015-02-25 1:01
                            GMT+11:00 Carlos Ortega <span dir="ltr"><<a
                                moz-do-not-send="true"
                                href="mailto:cof@qualityexcellence.es"
                                target="_blank">cof@qualityexcellence.es</a>></span>:<br>
                            <blockquote class="gmail_quote"
                              style="margin:0 0 0 .8ex;border-left:1px
                              #ccc solid;padding-left:1ex">
                              <div dir="ltr">
                                <div
                                  style="font-family:verdana,sans-serif">Hola,<br>
                                  <br>
                                </div>
                                <div
                                  style="font-family:verdana,sans-serif">Este
                                  otro ejemplo a partir de la idea de
                                  Jorge, de cómo procesar toda la tabla
                                  que tienes:<br>
                                  <br>
                                  > #Creo un data.frame de ejemplo
                                  todo con letras<br>
                                  > vtmp <-
                                  as.data.frame(lapply(letters,function(x)
                                  { rep(x,each=50) }))<br>
                                  > names(vtmp) <-
                                  paste("col",LETTERS,sep="")<br>
                                  > head(vtmp)<br>
                                    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<br>
                                  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<br>
                                  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<br>
                                  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<br>
                                  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<br>
                                  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<br>
                                  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<br>
                                  > <br>
                                  > #Los números de columnas impares
                                  de mi data.frame<br>
                                  > matIndex <- seq(1,
                                  dim(vtmp)[2], by=2)<br>
                                  > <br>
                                  > #Función para juntar dos columnas
                                  (idea de Jorge)<br>
                                  > mifun <- function(x,y)
                                  c(rbind(as.vector(vtmp[,x]),as.vector(vtmp[,y])))<br>
                                  > <br>
                                  > #Resulado aplicando mapply. Coge
                                  dos columnas consecutivas y las
                                  alterna<br>
                                  > #y así de forma iterativa para
                                  cada una de las columnas que indica
                                  "matIndex" y la siguiente columna
                                  "matIndex+1" <br>
                                  > resultado <-
                                  mapply(mifun,matIndex, matIndex+1)<br>
                                  > head(kk)<br>
                                       [,1] [,2] [,3] [,4] [,5] [,6]
                                  [,7] [,8] [,9] [,10] [,11] [,12] [,13]<br>
                                  [1,] "a"  "c"  "e"  "g"  "i"  "k" 
                                  "m"  "o"  "q"  "s"   "u"   "w"   "y" 
                                  <br>
                                  [2,] "b"  "d"  "f"  "h"  "j"  "l" 
                                  "n"  "p"  "r"  "t"   "v"   "x"   "z" 
                                  <br>
                                  [3,] "a"  "c"  "e"  "g"  "i"  "k" 
                                  "m"  "o"  "q"  "s"   "u"   "w"   "y" 
                                  <br>
                                  [4,] "b"  "d"  "f"  "h"  "j"  "l" 
                                  "n"  "p"  "r"  "t"   "v"   "x"   "z" 
                                  <br>
                                  [5,] "a"  "c"  "e"  "g"  "i"  "k" 
                                  "m"  "o"  "q"  "s"   "u"   "w"   "y" 
                                  <br>
                                  [6,] "b"  "d"  "f"  "h"  "j"  "l" 
                                  "n"  "p"  "r"  "t"   "v"   "x"   "z" 
                                  <br>
                                  > <br>
                                  <br>
                                </div>
                                <div
                                  style="font-family:verdana,sans-serif">Saludos,<br>
                                </div>
                                <div
                                  style="font-family:verdana,sans-serif">Carlos

                                  Ortega<br>
                                </div>
                                <div
                                  style="font-family:verdana,sans-serif"><a
                                    moz-do-not-send="true"
                                    href="http://www.qualityexcellence.es"
                                    target="_blank">www.qualityexcellence.es</a><br>
                                </div>
                              </div>
                              <div class="gmail_extra"><br>
                                <div class="gmail_quote">El 24 de
                                  febrero de 2015, 14:10, Fernando
                                  Macedo <span dir="ltr"><<a
                                      moz-do-not-send="true"
                                      href="mailto:fermace@gmail.com"
                                      target="_blank">fermace@gmail.com</a>></span>
                                  escribió:
                                  <div>
                                    <div><br>
                                      <blockquote class="gmail_quote"
                                        style="margin:0 0 0
                                        .8ex;border-left:1px #ccc
                                        solid;padding-left:1ex"> Excelente!
                                        Ahora corre muy rápido. No
                                        conocía ese método, creo que me
                                        va a<br>
                                        resultar muy útil.<br>
                                        <br>
                                        Muchas gracias y saludos.<br>
                                        <br>
                                        Fernando Macedo<br>
                                        <br>
                                        El 24/02/15 a las 10:51, Jorge I
                                        Velez escribió:<br>
                                        <div>
                                          <div><br>
                                             Fernando,<br>
                                            <br>
                                             Podrias intentar<br>
                                            <br>
                                             R> a <- rep('a', 5)<br>
                                            R> b <- rep('b', 5)<br>
                                            R> a<br>
                                            [1] "a" "a" "a" "a" "a"<br>
                                            R> b<br>
                                            [1] "b" "b" "b" "b" "b"<br>
                                            R> c(rbind(a, b))<br>
                                              [1] "a" "b" "a" "b" "a"
                                            "b" "a" "b" "a" "b"<br>
                                            <br>
                                             Saludos,<br>
                                            Jorge.-<br>
                                            <br>
                                            <br>
                                            2015-02-24 23:49 GMT+11:00
                                            Fernando Macedo <<a
                                              moz-do-not-send="true"
                                              href="mailto:fermace@gmail.com"
                                              target="_blank">fermace@gmail.com</a>>:<br>
                                            <br>
                                            >  Buenas a todos.<br>
                                            > Relato el problema:<br>
                                            ><br>
                                            > - tengo un archivo de
                                            316 columnas por 562000
                                            filas (aprox.).<br>
                                            > - esas 316 columnas
                                            representan 158 sujetos, o
                                            sea dos columnas por cada<br>
                                            > individuo conteniendo
                                            información que debe ser
                                            condensada en una sola.<br>
                                            ><br>
                                            > Lo que necesito es ir
                                            tomando las dos columnas de
                                            cada individuo e<br>
                                            > intercalar los
                                            elementos de los vectores
                                            formando uno solo.<br>
                                            ><br>
                                            > Ejemplificando sería
                                            algo así:<br>
                                            ><br>
                                            > > a<br>
                                            > [1] "a" "a" "a" "a" "a"<br>
                                            > > b<br>
                                            > [1] "b" "b" "b" "b" "b"<br>
                                            > > c<br>
                                            >  [1] "a" "b" "a" "b"
                                            "a" "b" "a" "b" "a" "b"<br>
                                            ><br>
                                            ><br>
                                            > Estoy haciendo con un
                                            loop for pero es realmente
                                            muy lento. He buscado por<br>
                                            > algún paquete que ya lo
                                            haga directamente pero no he
                                            tenido mucho éxito. Me<br>
                                            > imagino que con sapply
                                            o apply pueda ser mucho más
                                            efectivo pero me ha<br>
                                            > resultado complicado
                                            para entender la sintaxis de
                                            estas funciones cuando<br>
                                            > involucra más de un
                                            objeto (vector, matriz,
                                            etc...).<br>
                                            ><br>
                                            > Desde ya agradezco las
                                            sugerencias que puedan
                                            verter sobre este problema.<br>
                                            ><br>
                                            > --<br>
                                            > Fernando Macedo<br>
                                            ><br>
                                            >         [[alternative
                                            HTML version deleted]]<br>
                                            ><br>
                                            >
                                            _______________________________________________<br>
                                            > R-help-es mailing list<br>
                                            > <a
                                              moz-do-not-send="true"
                                              href="mailto:R-help-es@r-project.org"
                                              target="_blank">R-help-es@r-project.org</a><br>
                                            > <a
                                              moz-do-not-send="true"
                                              href="https://stat.ethz.ch/mailman/listinfo/r-help-es"
                                              target="_blank">https://stat.ethz.ch/mailman/listinfo/r-help-es</a><br>
                                            ><br>
                                            <br>
                                                    [[alternative HTML
                                            version deleted]]<br>
                                            <br>
_______________________________________________<br>
                                            R-help-es mailing list<br>
                                            <a moz-do-not-send="true"
                                              href="mailto:R-help-es@r-project.org"
                                              target="_blank">R-help-es@r-project.org</a><br>
                                            <a moz-do-not-send="true"
                                              href="https://stat.ethz.ch/mailman/listinfo/r-help-es"
                                              target="_blank">https://stat.ethz.ch/mailman/listinfo/r-help-es</a><br>
                                          </div>
                                        </div>
                                      </blockquote>
                                    </div>
                                  </div>
                                </div>
                                <span><font color="#888888"><br>
                                    <br clear="all">
                                    <br>
                                    -- <br>
                                    <div><span
                                        style="font-family:verdana,sans-serif">Saludos,</span><br
style="font-family:verdana,sans-serif">
                                      <span
                                        style="font-family:verdana,sans-serif">Carlos

                                        Ortega</span><br
                                        style="font-family:verdana,sans-serif">
                                      <span
                                        style="font-family:verdana,sans-serif"><a
                                          moz-do-not-send="true"
                                          href="http://www.qualityexcellence.es"
                                          target="_blank">www.qualityexcellence.es</a></span></div>
                                  </font></span></div>
                            </blockquote>
                          </div>
                          <br>
                        </div>
                        <div class="gmail_extra"><br>
                        </div>
                      </div>
                    </blockquote>
                    <br>
                  </div>
                </div>
              </div>
            </div>
          </blockquote>
        </div>
        <br>
        <br clear="all">
        <br>
        -- <br>
        <div class="gmail_signature"><span
            style="font-family:verdana,sans-serif">Saludos,</span><br
            style="font-family:verdana,sans-serif">
          <span style="font-family:verdana,sans-serif">Carlos Ortega</span><br
            style="font-family:verdana,sans-serif">
          <span style="font-family:verdana,sans-serif"><a
              moz-do-not-send="true"
              href="http://www.qualityexcellence.es" target="_blank">www.qualityexcellence.es</a></span></div>
      </div>
    </blockquote>
    <br>
  </body>
</html>