3 votos

Combinar las iteraciones de un bucle como una sola trama en R

Estoy buscando combinar todas las iteraciones de un bucle en una sola trama utilizando R. Estoy realizando un análisis de sombras en el que realizo el cálculo para horas específicas de un día y me gustaría que cada cálculo se combinara en una sola trama. Por ejemplo, cuando tengo cinco horas para calcular me gustaría que mi trama fuera: outRast = (i1 + i2 + i3 + i4 + i5).

Tengo problemas para añadir las iteraciones del bucle a una única trama donde se combinarán, en lugar de sobreescribirse.

Abajo está mi código con las iteraciones de salida que se guardan como un tif.

#Spring parametres
yy <- 2019
mm <- 03
dd <- 20
hh <- seq(10, 14)

#Shadow Analysis for spring season
for (i in hh) {
  jd <- JDymd(yy, mm, dd, i)
  sv <- sunvector(jd, rastCentre(ffLidar)[2], rastCentre(ffLidar)[1], -4)
  springShadows <- doshade(ffLidar, sv, 0.5)
  writeRaster(springShadows, paste("springShadows", i, ".tif"))
}

1voto

Dan Puntos 16

No estás haciendo nada para combinar los rásters en tu código. Sólo crea un raster para la primera iteración, fuera del bucle, y luego los suma en cada iteración posterior dentro del bucle. Para su iterador en el bucle for sólo eliminar el primer elemento por ejemplo., hh[-1] . También puedes hacer tu código un poco más eficiente anidando funciones, en este caso en una sola llamada.

springShadows <- doshade(ffLidar, sunvector(JDymd(yy, mm, dd, hh[1]),
                   rastCentre(ffLidar)[2], rastCentre(ffLidar)[1], -4), 0.5)
  for (i in hh[-1]) { 
    springShadows <- springShadows + doshade(ffLidar, 
                       sunvector(JDymd(yy, mm, dd, hh[i]),                 
                       rastCentre(ffLidar)[2], rastCentre(ffLidar)[1], -4), 0.5)
  }
writeRaster(springShadows, "springShadows".tif")

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X