
realmente nao entendi 100% do q vc quer fazer, mas sera' que o seguinte nao seria suficiente? v1 = c('tair', 'tsoil', 'biomass', 'lai') v2 = 2005:2007 v3 = seq(10, 40, 10) expand.grid(var=v1, ano=v2, value=v3) ? Em 9 de agosto de 2013 13:09, Tiago Souza Marçal <tiagosouzamarcal@hotmail.com> escreveu:
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@yahoo.com.br To: r-br@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 value 1 tair 2005-01-01 10 2 tair 2006-01-01 20 3 tair 2007-01-01 30 4 tair 2008-01-01 40 5 tsoil 2005-01-01 10 6 tsoil 2006-01-01 20 7 tsoil 2007-01-01 30 8 tsoil 2008-01-01 40 etc etc
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 names r1 <- r2 <- r3 <- r4 <- raster(nrow = 50, ncol = 100) r1[] <- 10 r2[] <- 20 r3[] <- 30 r4[] <- 40 s <- stack(r1, r2, r3, r4)
# Set years names(s) <- c('X2005.01.01', 'X2006.01.01', 'X2007.01.01', 'X2008.01.01')
# Create random variable names vars <- 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/inde... Phone: (612) 323 9898
_______________________________________________ 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.
_______________________________________________ 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.