<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Tente usar o <font face="Courier New">for()</font>.<BR> <BR>Att.<BR> <BR>Tiago.<br><br><BR><div>#################################################################</div><div> </div><div>Tiago de Souza Marçal - Graduando em Agronomia pelo CCA-UFES</div><div> </div><div>Bolsista de Iniciação Científica da área de Genética e Melhoramento de Plantas</div><div> </div><div>################################################################# </div><br> <BR><div><hr id="stopSpelling">Date: Fri, 9 Aug 2013 08:44:26 -0700<br>From: thi_veloso@yahoo.com.br<br>To: r-br@listas.c3sl.ufpr.br<br>Subject: [R-br] Popular um data.frame em dois loops<br><br><div style="color: rgb(0, 0, 0); font-family: times new roman, new york, times, serif; font-size: 12pt; background-color: rgb(255, 255, 255);"><div style='font-family: "times new roman", "new york", times, serif; font-size: 12pt;'><span>Pessoal,</span></div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'><span><br></span></div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'><span>Estou fazendo um loop para variáveis (tair, tsoil, biomass, lai) e dentro desse loop estou fazendo outro com anos (2005, 2006, 2007) etc.</span></div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'><span><br></span></div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'><span>Ao final dos dois loops, gostaria de ter um data.frame assim:</span></div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'><span><br></span></div><div style="background-color: transparent;">> d</div><div style="background-color: transparent;">  var       date value</div><div style="background-color: transparent;">1 tair 2005-01-01    10</div><div style="background-color: transparent;">2 tair 2006-01-01    20</div><div style="background-color: transparent;">3 tair 2007-01-01    30</div><div style="background-color: transparent;"><span></span></div><div style="background-color: transparent;">4 tair 2008-01-01    40</div><div style="background-color: transparent;"><span style="background-color: transparent;">5 tsoil 2005-01-01   10</span><br></div><div style="background-color: transparent;">6 tsoil 2006-01-01   20</div><div style="background-color: transparent;">7 tsoil 2007-01-01   30</div><div style="background-color: transparent;">8 tsoil 2008-01-01   40</div><div style="background-color: transparent;">etc</div><div style="background-color: transparent;">etc</div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'><span><br></span></div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'><span>Qual é o meio mais eficiente para fazer isso?</span></div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'><span><br></span></div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'>Talvez até exista uma forma mais rápida de fazer isso do que usar loops, então qualquer sugestão será muito bem-vinda.</div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'><span><br></span></div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'>Segue o CMR (que não está eficiente, é só para fins de compreensão do problema):</div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'><br></div><div style='color: rgb(0, 0, 0); font-family: "times new roman", "new york", times, serif; font-size: 16px; font-style: normal; background-color: transparent;'>-------------------------------------------------------------------------------------------------------------</div><div style='font-family: "times new roman", "new york", times, serif; font-size: 12pt;'></div><div style='font-family: "times new roman", "new york", times, serif; font-size: 12pt;'>library(raster)<br></div><div><div><br></div><div># Create random rasterstack and set names</div><div>r1 <- r2 <- r3 <- r4 <- raster(nrow = 50, ncol = 100)</div><div>r1[] <- 10</div><div>r2[] <- 20</div><div>r3[] <- 30</div><div>r4[] <- 40</div><div>s <- stack(r1, r2, r3, r4)</div><div><br></div><div># Set years</div><div>names(s) <- c('X2005.01.01', 'X2006.01.01', 'X2007.01.01', 'X2008.01.01')</div><div><br></div><div># Create random variable
 names</div><div>vars <- c('tempsoi', 'tempair', 'biomass', 'lai')</div><div><br></div><div>for( i in 1:length (vars) ) {</div><div>    </div><div>      # Loop over years (names), extract raster average values and put in the data.frame</div><div>      d <- NULL</div><div>    </div><div>      for ( j in 1:length (names(s)) ) {</div><div>            var   <- vars[i]</div><div>            date  <- format (as.Date (gsub (pattern='\\.', replacement='-', substring (names(s)[j],2))))</div><div>            value <- mean (getValues (s[[j]]), na.rm = TRUE)</div><div>            d     <- rbind (d, data.frame(var, date, value))</div><div>      } # end loop over names</div><div>      </div><div>} # end
 loop vars</div><div style='font-family: "times new roman", "new york", times, serif; font-size: 12pt;'><span style="font-size: 12pt; background-color: transparent;"><br></span></div><div style='font-family: "times new roman", "new york", times, serif; font-size: 12pt;'><span style="font-size: 12pt; background-color: transparent;">-------------------------------------------------------------------------------------------------------------</span><br></div></div><div style='font-family: "times new roman", "new york", times, serif; font-size: 12pt;'><div></div></div><div style='font-family: "times new roman", "new york", times, serif; font-size: 12pt;'><br></div><div style='font-family: "times new roman", "new york", times, serif; font-size: 12pt;'><br></div><div style='font-family: "times new roman", "new york", times, serif; font-size: 12pt;'>Saudações,<br>--<br>Thiago V. dos Santos<br>PhD student<br>Land and Atmospheric Science<br>University of
 Minnesota<br>http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm<br>Phone: (612) 323 9898</div></div><br>_______________________________________________
R-br mailing list
R-br@listas.c3sl.ufpr.br
https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forne�a c�digo m�nimo reproduz�vel.</div>                                      </div></body>
</html>