[R-br] substitui loop por funcoes do R
Benilton Carvalho
beniltoncarvalho em gmail.com
Sexta Outubro 21 10:30:40 BRST 2011
do.call(rbind, lapply(split(dados, dados$parcela), function(x) cbind(x,
taxa=c(0, diff(x$y)))))
Nao da p testar agora, mas é p ser algo perto disso.
On Friday, 21 October 2011, Samuel Carvalho <samukajm em yahoo.com.br> wrote:
> Caros membros do grupo,
> Alguém poderia por gentileza me auxiliar com o código a seguir?
> No caso a idéia é substituir o loop que calcula a diferença entre as
observações dentro de uma mesma parcela sendo que a primeira observação de
cada parcela deve ter valor zerado. Para aqueles mais familiarizados estou
calculando a taxa de incremento para sucessivas medições. Segue o código
> ###RCMR
> dados<-data.frame(parcela=rep(1:5,each=3), y=runif(15))
> dados
> dados$taxa<-0
> for(i in 1:(nrow(dados)-1))
> {
> if(dados$parcela[i] == dados$parcela[i+1])
> {
> dados$taxa[i+1] <- dados$y[i+1]-dados$y[i]
> }
> }
> dados
> #A seguir tento reproduzir o código acima, porém feito incorretamente
> dados$taxa<-0
> dados$taxa[which(diff(dados$parcela)==0)] <- diff(dados$y) #feito de
maneira incorreta
> dados
>
> Abraços
> Samuel
>
> ====================================
> Samuel P. C. Carvalho
> Mestre em Ciências Florestais [UFLA]
> Doutorando em Recursos Florestais [ESALQ/USP]
> =============================================
--
Successful people ask better questions, and as a result, they get better
answers. (Tony Robbins)
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20111021/9aafb37e/attachment.html>
Mais detalhes sobre a lista de discussão R-br