<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>Caros R-users</div><div><br></div><div>Dada uma matrix qualquer:</div><div><br></div><div><span style="background-color: rgb(0, 0, 0);"><font color="#29f914" face="Andale Mono">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”)</font></span></div><div><div style="margin: 0px; font-family: 'Andale Mono'; color: rgb(41, 249, 20); background-color: rgb(0, 0, 0);">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)</div></div><div><div style="margin: 0px; font-family: 'Andale Mono'; color: rgb(41, 249, 20); background-color: rgb(0, 0, 0);">matrix.x = data.frame(seq,var1)</div></div><div><br></div><div>funcao.x = function(x,d=1,T=3)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>i = exp ( ( -x ) / ( d * T ) )</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>net = sum (i)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>resultado = 100 * ( i / net ) </div><div></div><div><span class="Apple-tab-span" style="white-space:pre"> </span>return (resultado)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div><br></div><div>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.</div><div>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:</div><div>
<p style="margin-bottom: 0.71cm">library(“plyr”) </p></div><div><br></div><div><br></div><div><div style="margin: 0px; font-family: 'Andale Mono'; color: rgb(41, 249, 20); background-color: rgb(0, 0, 0);">R2 <- ddply(matrix.x, 'seq', transform, var=funcao.x(matrix.x$var1))</div><div style="margin: 0px; font-family: 'Andale Mono'; color: rgb(0, 249, 0); background-color: rgb(0, 0, 0);">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</div></div><div><br></div><div><br></div><div>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?</div><div><br></div><div>No mais agradeço,</div><div><br></div><div>Thales Siqueira</div><div><br></div><div><br></div></body></html>