[R-br] Popular um data.frame em dois loops

Tiago Souza Marçal tiagosouzamarcal em hotmail.com
Sexta Agosto 9 13:09:09 BRT 2013


Tente usar o for().
 
Att.
 
Tiago.


################################################################# Tiago de Souza Marçal - Graduando em Agronomia pelo CCA-UFES Bolsista de Iniciação Científica da área de Genética e Melhoramento de Plantas ################################################################# 
 
Date: Fri, 9 Aug 2013 08:44:26 -0700
From: thi_veloso em yahoo.com.br
To: r-br em listas.c3sl.ufpr.br
Subject: [R-br] Popular um data.frame em dois loops

Pessoal,
Estou fazendo um loop para variáveis (tair, tsoil, biomass, lai) e dentro desse loop estou fazendo outro com anos (2005, 2006, 2007) etc.
Ao final dos dois loops, gostaria de ter um data.frame assim:
> d  var       date value1 tair 2005-01-01    102 tair 2006-01-01    203 tair 2007-01-01    304 tair 2008-01-01    405 tsoil 2005-01-01   10
6 tsoil 2006-01-01   207 tsoil 2007-01-01   308 tsoil 2008-01-01   40etcetc
Qual é o meio mais eficiente para fazer isso?
Talvez até exista uma forma mais rápida de fazer isso do que usar loops, então qualquer sugestão será muito bem-vinda.
Segue o CMR (que não está eficiente, é só para fins de compreensão do problema):
-------------------------------------------------------------------------------------------------------------library(raster)

# Create random rasterstack and set namesr1 <- r2 <- r3 <- r4 <- raster(nrow = 50, ncol = 100)r1[] <- 10r2[] <- 20r3[] <- 30r4[] <- 40s <- stack(r1, r2, r3, r4)
# Set yearsnames(s) <- c('X2005.01.01', 'X2006.01.01', 'X2007.01.01', 'X2008.01.01')
# Create random variable
 namesvars <- c('tempsoi', 'tempair', 'biomass', 'lai')
for( i in 1:length (vars) ) {          # Loop over years (names), extract raster average values and put in the data.frame      d <- NULL          for ( j in 1:length (names(s)) ) {            var   <- vars[i]            date  <- format (as.Date (gsub (pattern='\\.', replacement='-', substring (names(s)[j],2))))            value <- mean (getValues (s[[j]]), na.rm = TRUE)            d     <- rbind (d, data.frame(var, date, value))      } # end loop over names      } # end
 loop vars
-------------------------------------------------------------------------------------------------------------


Saudações,
--
Thiago V. dos Santos
PhD student
Land and Atmospheric Science
University of
 Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/index.htm
Phone: (612) 323 9898
_______________________________________________
R-br mailing list
R-br em 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. 		 	   		  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130809/dc552649/attachment.html>


Mais detalhes sobre a lista de discussão R-br