[R-br] Família ply

Tropidurus Torquatus t.torquatus em gmail.com
Terça Fevereiro 25 17:14:37 BRT 2014


Rubem,

Acho que fui infeliz ao exemplificar o meu problema,
na verdade nos meus dados reais estou obtendo os seguinte erro:

Error in attributes(out) <- attributes(col) : 
  'names' attribute [2510] must be the same length as the vector [5]

Já verifiquei na internet todas as tentativas:

http://stackoverflow.com/questions/18854934/ddply-error-error-in-attributesout-attributescol-names-attribute-mus
http://stackoverflow.com/questions/14153092/meaning-of-ddply-error-names-attribute-9-must-be-the-same-length-as-the-vec
http://searchinsleep.blogspot.de/2013/05/plyr-18-problem-updated.html

Nenhuma deu certo… e pelo que vi… no terceiro link é parece ter observado um problema do pacote plyr 1.8…

Alguém sugere outra alternativa?


Em 25/02/2014, à(s) 17:49, Rubem Kaipper Ceratti <rubem_ceratti em yahoo.com.br> escreveu:

> Apenas tire a parte 'matrix.x$' e deve funcionar:
> 
> R2 <- ddply(matrix.x, 'seq', transform, var=funcao.x(var1))
> 
> 
> 
> De: Tropidurus Torquatus <t.torquatus em gmail.com>
> Para: r-br em listas.c3sl.ufpr.br 
> Enviadas: Terça-feira, 25 de Fevereiro de 2014 12:41
> Assunto: [R-br] Família ply
> 
> Caros R-users
> 
> Dada uma matrix qualquer:
> 
> seq = c("a","a","a","a","a","a","b","b","b","b","b","c","c","c","c","c","c","c","c","c","c","c","c","c”)
> var1 = c(1,2,3,4,5,6,0,1,2,3,4,0,1,2,3,4,5,6,7,8,9,10,11,12)
> matrix.x = data.frame(seq,var1)
> 
> funcao.x = function(x,d=1,T=3)
> 		{
> 			i = exp ( ( -x ) / ( d * T ) )
> 			net = sum (i)
> 			resultado = 100 * ( i / net )  
> 			return (resultado)
> 		}
> 
> Preciso aplicar a função dentro de cada subgrupo (seq) da matrix.x e criar ou um novo data.frame ou uma nova linha da matrix.x.
> Tentei utilizar o comando ddply do pacote, com o comando abaixo, não sei se essa seria a melhor forma, mas mesmo assim não estou conseguindo:
> library(“plyr”) 
> 
> 
> R2 <- ddply(matrix.x, 'seq', transform, var=funcao.x(var1))
> Error in data.frame(list(seq = c(2L, 2L, 2L, 2L, 2L), var1 = c(0, 1, 2,  : arguments imply differing number of rows: 5, 24
> 
> 
> Na verdade essa formula deveria dar um valor para cada linha… não sei se escolhi a função correta para o que necessito, alguém poderia me mostrar um caminho a seguir?
> 
> No mais agradeço,
> 
> Thales Siqueira
> 
> 
> 
> _______________________________________________
> 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.
> 
> _______________________________________________
> 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/20140225/06968326/attachment.html>


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