*Hola a todos, estoy intentado hacer una primera diferencia en una serie temporal.* * * *Me da error. Os paso el código con los errores y el dato.* * * *Uso R 14 con Rstudio en windows7-64 bits.* * *> ejemplo_agregado$total_dif<- diff(ejemplo_agregado$Total)Error en `$<-.data.frame`(`*tmp*`, "total_dif", value = c(-0.03881, -0.0314286960000001, :replacement has 155 rows, data has 156> > ejemplo_agregado$total_dif<- diff(ejemplo_agregado$Total, lag=1, differences=1)Error en `$<-.data.frame`(`*tmp*`, "total_dif", value c(-0.03881, -0.0314286960000001, : replacement has 155 rows, data has 156Error in if (eval(parse(text paste("nrow(", dsnameValue, ")"))) == 0) { : argumento tiene longitud cero Muchas gracias y saludos, Otto ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120115/6978ba8b/attachment.html> ------------ próxima parte ------------ fecha2 Total 01/01/1999 1.15913 01/02/1999 1.12032 01/03/1999 1.088891304 01/04/1999 1.070045455 01/05/1999 1.062528571 01/06/1999 1.038059091 01/07/1999 1.037236364 01/08/1999 1.060445455 01/09/1999 1.049936364 01/10/1999 1.069990476 01/11/1999 1.032572727 01/12/1999 1.010995652 01/01/2000 1.01312381 01/02/2000 0.984219048 01/03/2000 0.964595652 01/04/2000 0.94504 01/05/2000 0.907904348 01/06/2000 0.949968182 01/07/2000 0.939433333 01/08/2000 0.904195652 01/09/2000 0.870919048 01/10/2000 0.853395455 01/11/2000 0.854759091 01/12/2000 0.900009524 01/01/2001 0.938395652 01/02/2001 0.92093 01/03/2001 0.908059091 01/04/2001 0.892709524 01/05/2001 0.874856522 01/06/2001 0.852980952 01/07/2001 0.861027273 01/08/2001 0.901747826 01/09/2001 0.911735 01/10/2001 0.905952174 01/11/2001 0.888154545 01/12/2001 0.890742857 01/01/2002 0.883343478 01/02/2002 0.870835 01/03/2002 0.876433333 01/04/2002 0.886263636 01/05/2002 0.917582609 01/06/2002 0.95638 01/07/2002 0.99253913 01/08/2002 0.978040909 01/09/2002 0.980380952 01/10/2002 0.981334783 01/11/2002 1.001328571 01/12/2002 1.020313636 01/01/2003 1.062634783 01/02/2003 1.07814 01/03/2003 1.07987619 01/04/2003 1.086359091 01/05/2003 1.157622727 01/06/2003 1.167685714 01/07/2003 1.137517391 01/08/2003 1.115385714 01/09/2003 1.126109091 01/10/2003 1.170273913 01/11/2003 1.170975 01/12/2003 1.230947826 01/01/2004 1.262172727 01/02/2004 1.26434 01/03/2004 1.226856522 01/04/2004 1.199181818 01/05/2004 1.201304762 01/06/2004 1.214527273 01/07/2004 1.226918182 01/08/2004 1.219213636 01/09/2004 1.222195455 01/10/2004 1.249795238 01/11/2004 1.299895455 01/12/2004 1.34103913 01/01/2005 1.31162381 01/02/2005 1.30199 01/03/2005 1.318447826 01/04/2005 1.293971429 01/05/2005 1.268663636 01/06/2005 1.215513636 01/07/2005 1.203957143 01/08/2005 1.229556522 01/09/2005 1.224581818 01/10/2005 1.202280952 01/11/2005 1.178495455 01/12/2005 1.185945455 01/01/2006 1.2118 01/02/2006 1.19395 01/03/2006 1.202921739 01/04/2006 1.22783 01/05/2006 1.276756522 01/06/2006 1.266422727 01/07/2006 1.268733333 01/08/2006 1.280895652 01/09/2006 1.273119048 01/10/2006 1.262054545 01/11/2006 1.288990909 01/12/2006 1.319752381 01/01/2007 1.300008696 01/02/2007 1.30843 01/03/2007 1.324363636 01/04/2007 1.351080952 01/05/2007 1.35136087 01/06/2007 1.342290476 01/07/2007 1.372227273 01/08/2007 1.362486957 01/09/2007 1.39121 01/10/2007 1.422682609 01/11/2007 1.468131818 01/12/2007 1.45542381 01/01/2008 1.471421739 01/02/2008 1.475557143 01/03/2008 1.553004762 01/04/2008 1.575159091 01/05/2008 1.556122727 01/06/2008 1.55622381 01/07/2008 1.575834783 01/08/2008 1.495052381 01/09/2008 1.435527273 01/10/2008 1.328226087 01/11/2008 1.273215 01/12/2008 1.353382609 01/01/2009 1.327590909 01/02/2009 1.28053 01/03/2009 1.304886364 01/04/2009 1.32045 01/05/2009 1.366585714 01/06/2009 1.401677273 01/07/2009 1.408708696 01/08/2009 1.426861905 01/09/2009 1.456872727 01/10/2009 1.481309091 01/11/2009 1.491419048 01/12/2009 1.457178261 01/01/2010 1.427961905 01/02/2010 1.36816 01/03/2010 1.35736087 01/04/2010 1.342027273 01/05/2010 1.255119048 01/06/2010 1.22185 01/07/2010 1.279159091 01/08/2010 1.289936364 01/09/2010 1.308918182 01/10/2010 1.389590476 01/11/2010 1.364072727 01/12/2010 1.322030435 01/01/2011 1.336604762 01/02/2011 1.365755 01/03/2011 1.401786957 01/04/2011 1.446128571 01/05/2011 1.432931818 01/06/2011 1.440022727 01/07/2011 1.428842857 01/08/2011 1.433195652 01/09/2011 1.375913636 01/10/2011 1.37222381 01/11/2011 1.356086364 01/12/2011 1.340185714
Hola Otto, Gracias por el ejemplo y los datos. El error ocurre porque a utilizar la funcion diff(), la longitud del vector resultante es una menos que el vector de entrada. En otras palabras:> seq(10)[1] 1 2 3 4 5 6 7 8 9 10> length(seq(10))[1] 10> diff(seq(10))[1] 1 1 1 1 1 1 1 1 1> length(diff(seq(10)))[1] 9 Dependiendo del objetivo que tengas con tus datos, te sugeriria utilizar c(0, diff(ejemplo_agregado$Total)) o c(NA, diff(ejemplo_agregado$Total)) En el primer caso _asumes_ que la diferencia entre el primer valor de tu serie el el valor inmediatamente anterior es cero; en el segundo, que esta diferencia es NA. Lo otro que podrias hacer es crear un vector y <- diff(ejemplo_agregado$Total) y trabajar con el sin necesidad de agregarlo a tus datos originales. Un saludo, Jorge.- 2012/1/15 Otto F. Wagner <>> *Hola a todos, estoy intentado hacer una primera diferencia en una serie > temporal.* > * > * > *Me da error. Os paso el código con los errores y el dato.* > * > * > *Uso R 14 con Rstudio en windows7-64 bits.* > * > * > > > ejemplo_agregado$total_dif<- diff(ejemplo_agregado$Total)Error en `$<-.data.frame`(`*tmp*`, "total_dif", value = c(-0.03881, -0.0314286960000001, : > replacement has 155 rows, data has 156> > ejemplo_agregado$total_dif<- diff(ejemplo_agregado$Total, lag=1, differences=1)Error en `$<-.data.frame`(`*tmp*`, "total_dif", value = c(-0.03881, -0.0314286960000001, : > replacement has 155 rows, data has 156Error in if (eval(parse(text = paste("nrow(", dsnameValue, ")"))) == 0) { : > argumento tiene longitud cero > > > > Muchas gracias y saludos, > > Otto > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Muchas gracias!! * * El 15 de enero de 2012 18:46, Jorge I Velez <jorgeivanvelez@gmail.com>escribió:> Hola Otto, > > Gracias por el ejemplo y los datos. > > El error ocurre porque a utilizar la funcion diff(), la longitud del > vector resultante es una menos que el vector de entrada. En otras palabras: > > > seq(10) > [1] 1 2 3 4 5 6 7 8 9 10 > > length(seq(10)) > [1] 10 > > diff(seq(10)) > [1] 1 1 1 1 1 1 1 1 1 > > length(diff(seq(10))) > [1] 9 > > Dependiendo del objetivo que tengas con tus datos, te sugeriria utilizar > > c(0, diff(ejemplo_agregado$Total)) > > o > > c(NA, diff(ejemplo_agregado$Total)) > > En el primer caso _asumes_ que la diferencia entre el primer valor de tu > serie el el valor inmediatamente anterior es cero; en el segundo, que esta > diferencia es NA. > > Lo otro que podrias hacer es crear un vector > > y <- diff(ejemplo_agregado$Total) > > y trabajar con el sin necesidad de agregarlo a tus datos originales. > > Un saludo, > Jorge.- > > > 2012/1/15 Otto F. Wagner <> > >> *Hola a todos, estoy intentado hacer una primera diferencia en una serie >> temporal.* >> * >> * >> *Me da error. Os paso el código con los errores y el dato.* >> * >> * >> *Uso R 14 con Rstudio en windows7-64 bits.* >> * >> * >> >> > ejemplo_agregado$total_dif<- diff(ejemplo_agregado$Total)Error en `$<-.data.frame`(`*tmp*`, "total_dif", value = c(-0.03881, -0.0314286960000001, : >> replacement has 155 rows, data has 156> > ejemplo_agregado$total_dif<- diff(ejemplo_agregado$Total, lag=1, differences=1)Error en `$<-.data.frame`(`*tmp*`, "total_dif", value = c(-0.03881, -0.0314286960000001, : >> replacement has 155 rows, data has 156Error in if (eval(parse(text = paste("nrow(", dsnameValue, ")"))) == 0) { : >> argumento tiene longitud cero >> >> >> >> Muchas gracias y saludos, >> >> Otto >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >[[alternative HTML version deleted]]
Hola a todos, Estoy pasando una parte de mi código de R a C para que se ejecuten más rápido unos bucles anidados. No sabía nada de C antes de ponerme con ello y me he encontrado con la desagradable sorpresa de que parece ser que no existe una estructura en C equivalente a las listas de R. Casi todo el código que tengo usa listas así que ando un poco perdida. No sé si estoy equivocada (ojala) y realmente sí que hay una estructura equivalente a las listas. O si tal vez me recomendaríais otro lenguaje como Fortran o C++. A todo esto, soy usuaria de Windows (bastante a mi pesar) y por lo que he visto parece que C sea la manera más sencilla de traducir mi código de R y conseguir velocidad. ¿Algún consejo? o ¿alguien que se haya encontrado con el mismo problema? Muchas gracias anticipadas. Un saludo, Sandra. __________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 6800 (20120116) __________ ESET NOD32 Antivirus ha comprobado este mensaje. http://www.eset.com
¿Te serviría el paquete Rcpp? De acuerdo con su documentación: "R data types (SEXP) are matched to C++ objects in a class hierarchy. All R types are supported (vectors, functions, environment, etc ...) and each type is mapped to a dedicated class. For example, numeric vectors are represented as instances of the Rcpp::NumericVector class, environments are represented as instances of Rcpp::Environment, functions are represented as Rcpp::Function, etc ... The ??Rcpp-introduction?? vignette provides a good entry point to Rcpp." Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 16 de enero de 2012 19:07, Sandra Barragán <sandraba en eio.uva.es> escribió:> Hola a todos, > > Estoy pasando una parte de mi código de R a C para que se ejecuten más > rápido unos bucles anidados. > No sabía nada de C antes de ponerme coRn ello y me he encontrado con la > desagradable sorpresa de que parece ser que no existe una estructura en C > equivalente a las listas de R. Casi todo el código que tengo usa listas así > que ando un poco perdida. No sé si estoy equivocada (ojala) y realmente sí > que hay una estructura equivalente a las listas. O si tal vez me > recomendaríais otro lenguaje como Fortran o C++. > A todo esto, soy usuaria de Windows (bastante a mi pesar) y por lo que he > visto parece que C sea la manera más sencilla de traducir mi código de R y > conseguir velocidad. > ¿Algún consejo? o ¿alguien que se haya encontrado con el mismo problema? > > Muchas gracias anticipadas. > Un saludo, > > Sandra. > > > > __________ Información de ESET NOD32 Antivirus, versión de la base de firmas > de virus 6800 (20120116) __________ > > ESET NOD32 Antivirus ha comprobado este mensaje. > > http://www.eset.com > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es
Muchas gracias por la contestación. He estado mirando el paquete Rcpp y tiene muy buena pinta, el problema es que está preparado para C++ y por lo que he visto no lo puedo usar con C. Finalmente me he decidido a usar C pero con .Call que es bastante más completo. Ya os iré contando porque estoy yendo bastante lenta ya que sobrevivo a base de ejemplos que hay colgados por ahí para saber cómo hacer cada cosa, no se si no hay o es que no encuentro un manual completo de los objetos SEXP. Un saludo, Sandra. -----Mensaje original----- De: gilbellosta en gmail.com [mailto:gilbellosta en gmail.com] En nombre de Carlos J. Gil Bellosta Enviado el: lunes, 16 de enero de 2012 19:12 Para: Sandra Barragán CC: r-help-es en r-project.org Asunto: Re: [R-es] Estructura tipo lista de R en C ¿Te serviría el paquete Rcpp? De acuerdo con su documentación: "R data types (SEXP) are matched to C++ objects in a class hierarchy. All R types are supported (vectors, functions, environment, etc ...) and each type is mapped to a dedicated class. For example, numeric vectors are represented as instances of the Rcpp::NumericVector class, environments are represented as instances of Rcpp::Environment, functions are represented as Rcpp::Function, etc ... The ‘‘Rcpp-introduction’’ vignette provides a good entry point to Rcpp." Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El día 16 de enero de 2012 19:07, Sandra Barragán <sandraba en eio.uva.es> escribió:> Hola a todos, > > Estoy pasando una parte de mi código de R a C para que se ejecuten más > rápido unos bucles anidados. > No sabía nada de C antes de ponerme coRn ello y me he encontrado con la > desagradable sorpresa de que parece ser que no existe una estructura en C > equivalente a las listas de R. Casi todo el código que tengo usa listasasí> que ando un poco perdida. No sé si estoy equivocada (ojala) y realmente sí > que hay una estructura equivalente a las listas. O si tal vez me > recomendaríais otro lenguaje como Fortran o C++. > A todo esto, soy usuaria de Windows (bastante a mi pesar) y por lo que he > visto parece que C sea la manera más sencilla de traducir mi código de R y > conseguir velocidad. > ¿Algún consejo? o ¿alguien que se haya encontrado con el mismo problema? > > Muchas gracias anticipadas. > Un saludo, > > Sandra. > > > > __________ Información de ESET NOD32 Antivirus, versión de la base defirmas> de virus 6800 (20120116) __________ > > ESET NOD32 Antivirus ha comprobado este mensaje. > > http://www.eset.com > > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 6800 (20120116) __________ ESET NOD32 Antivirus ha comprobado este mensaje. http://www.eset.com __________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 6808 (20120119) __________ ESET NOD32 Antivirus ha comprobado este mensaje. http://www.eset.com __________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 6808 (20120119) __________ ESET NOD32 Antivirus ha comprobado este mensaje. http://www.eset.com