Buenos días,Loops ineficiencia en I
he estado desarrollando desde hace unos meses en R y que tiene que asegurarse de que el tiempo de ejecución de mi código no es demasiado largo, porque analizo grandes conjuntos de datos.
Por lo tanto, he estado tratando de usar tantas funciones vectorizadas como sea posible.
Sin embargo, todavía me estoy preguntando algo.
Lo que es costoso en R no es el ciclo en sí ¿no? Es decir, el problema surge cuando comienzas a modificar variables dentro del ciclo, por ejemplo ¿es correcto?
Por lo tanto, estaba pensando, ¿qué pasa si simplemente tiene que ejecutar una función en cada elemento (en realidad no le importa el resultado). Por ejemplo, para escribir datos en una base de datos. ¿Qué deberías hacer?
1) ¿Utiliza mapply sin almacenar el resultado en ninguna parte?
2) hacemos un ciclo sobre el vector y solo aplicamos f (i) a cada elemento?
3) ¿Hay alguna función mejor que podría haber pasado por alto?
(eso por supuesto suponiendo que su función no está óptimamente vectorizada).
¿Qué pasa con el paquete foreach
? ¿Has experimentado alguna mejora en el rendimiento al usarlo?
Voy a dejar la respuesta a alguien que es más experto que yo, pero en mi experiencia práctica los * Se aplican las funciones normalmente (pero no siempre) acelerar la cosa un poco. – nico
Supongo que sí, porque el ciclo está hecho "en C" y no directamente a través de R. – SRKX
Consulte esta publicación SO en la familia de aplicaciones - http: // stackoverflow.com/questions/2275896/is-rs-apply-family-more-than-syntactic-sugar – csgillespie