<div dir="ltr">SE você chegou num character string que contém toda a função de forma "algébrica", você pode fazer o resto do "parsing" na planilha Excel propriamente dita.<div><br></div><div>Meus 0,199999 centavos.</div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-04-29 10:35 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil <span dir="ltr"><<a href="mailto:emmanuel.brasil@gmail.com" target="_blank">emmanuel.brasil@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">Ei Cesar e Leonardo,</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">Por algum motivo que eu não sei informar, a sugestão do Leonardo (que eu já havia tentado antes) não retorna todos os coeficientes. Repare que nessa sugestão apenas 3 coeficientes aparecem idade, mas fórmula possui 5 coeficentes. Aonde estão os outros dois? Não sei. </div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">A sugestão do César tambem não era bem o caminho que eu esperava e não retorna ou que eu gostaria que retornasse.</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">Mas eu tive uma pequena luz com a sugestão do parse que foi fazer um </div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">> x <- deparse(Function(f))</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">> class(x)</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">"character"</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">Agora seria apenas editar a saida com estring e organizar como desejado. Mas eu ainda estou tendo dificuldades nesses passos porque os splits não presenrvam os + os - e os *. Então, me ocorreu que talvez eu pudesse olhar dentro da Function() pra ver o que ela faz e de onde ela tira esses coeficientes. Mas...</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><div class="gmail_default">Não estou conseguindo enxergar dentro da função. </div><div class="gmail_default"><div class="gmail_default">> Function</div><div class="gmail_default">function (object, ...) </div><div class="gmail_default">UseMethod("Function")</div><div class="gmail_default"><environment: namespace:Hmisc></div></div><div class="gmail_default"><div class="gmail_default">> Function.cph</div><div class="gmail_default">Error: object 'Function.cph' not found</div><div class="gmail_default">> Function.rms</div><div class="gmail_default">Error: object 'Function.rms' not found</div></div></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_extra"><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">Alguma dica de como entender o que faz a Function.cph()</div><span class="HOEnZb"><font color="#888888"><br></font></span></div><div class="gmail_extra"><span class="HOEnZb"><font color="#888888"><br clear="all"><div><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><font face="'courier new', monospace" style="background-color:rgb(255,255,255)" color="#000066">Pedro Brasil</font></div></div></div></div></div></div></font></span><div><div class="h5">
<br><div class="gmail_quote">Em 26 de abril de 2016 14:51, Cesar Rabak <span dir="ltr"><<a href="mailto:cesar.rabak@gmail.com" target="_blank">cesar.rabak@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Pedro,<div><br></div><div>Em síntese o que você deseja fazer é um /parsing/ da fórmula e exportá-la (na verdade os termos) para a planilha eletrônica.</div><div><br></div><div>IIRC não há um pacote ou função que o faça direta e completamente, mas um início saudável seria ir na linha deste post: <a href="http://stackoverflow.com/questions/10224805/how-to-select-a-part-of-formula-in-formula-in-r" target="_blank">http://stackoverflow.com/questions/10224805/how-to-select-a-part-of-formula-in-formula-in-r</a>.</div><div><br></div><div>HTH</div><div>--</div><div>Cesar Rabak</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>2016-04-20 17:36 GMT-03:00 Pedro Emmanuel Alvarenga Americano do Brasil <span dir="ltr"><<a href="mailto:emmanuel.brasil@gmail.com" target="_blank">emmanuel.brasil@gmail.com</a>></span>:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr"><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">Amigos de R,</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)">Ajustei um modelo de sobrevivencia e gostaria de exportar o modelo uma planilha xlsx ou csv, de tal forma que os coeficientes fiquem numa coluna e na coluna ao lado fique pelo o que o coeficiente está multiplicando. Já quebrei a cabeça aqui e não consegui. A pegadinha é que o modelo possui algumas transformações por splines e por isso preciso dos valores dos nós pra cada variável contínua. Achei uma função chamada Function que faz isso. Mas depois disso eu não avancei. Eu gostaria de pegar da saída função Function o que está entre as chaves, quebrar nos "+" e nos "-" pra separar os termos e depois quebrar nos "*" pra separar as colunas. Organizar em formato de planilha e exportar.</div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">library(rms)</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">n <- 1000</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">age <- 50 + 12*rnorm(n)</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">label(age) <- "Age"</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">sex <- factor(sample(c('Male','Female'), n, </font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace"> rep=TRUE, prob=c(.6, .4)))</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">cens <- 15*runif(n)</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">h <- .02*exp(.04*(age-50)+.8*(sex=='Female'))</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">dt <- -log(runif(n))/h</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">label(dt) <- 'Follow-up Time'</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">e <- ifelse(dt <= cens,1,0)</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">dt <- pmin(dt, cens)</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">units(dt) <- "Year"</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">dd <- datadist(age, sex)</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">options(datadist='dd')</font></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">S <- Surv(dt,e)</font></div><div class="gmail_default"><span style="color:rgb(0,0,102);font-family:'courier new',monospace">f <- cph(S ~ rcs(age,4) + sex, x=TRUE, y=TRUE)</span><br></div><div class="gmail_default"><font color="#000066" face="courier new, monospace">>Function(f)</font><span style="color:rgb(0,0,102);font-family:'courier new',monospace"> </span></div><div class="gmail_default"><span style="color:rgb(0,0,102);font-family:'courier new',monospace"><div class="gmail_default">>function(age = 48.800654,sex = "Male") {0.28612987-0.017321951* age+0.00012586581*pmax(age-29.600456,0)^3-0.00046285671*pmax(age-44.273198,0)^3+0.00042111763*pmax(age-53.769262,0)^3-8.4126731e-05*pmax(age-69.855597,0)^3-0.64448916*(sex=="Male") }</div><div class="gmail_default"><environment: 0x0000000015fa7378></div><div class="gmail_default"><br></div><div class="gmail_default">Pra ficar mais ou menos assim</div><div class="gmail_default">+0.28612987</div><div class="gmail_default">-0.017321951 age</div><div class="gmail_default">+0.00012586581 pmax(age-29.600456,0)^3</div><div class="gmail_default">-0.00046285671 pmax(age-44.273198,0)^3</div><div class="gmail_default">+0.00042111763 pmax(age-53.769262,0)^3</div><div class="gmail_default">-8.4126731e-05 pmax(age-69.855597,0)^3</div><div class="gmail_default">-0.64448916 (sex=="Male") <br></div><div class="gmail_default"><br></div><div class="gmail_default">Alguma luz?</div><div class="gmail_default"><br></div></span></div><div class="gmail_default"><span style="color:rgb(0,0,102);font-family:'courier new',monospace">Abraço forte,</span></div><div class="gmail_default" style="font-family:'courier new',monospace;color:rgb(0,0,102)"><br></div><div><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><font face="'courier new', monospace" style="background-color:rgb(255,255,255)" color="#000066">Pedro Brasil</font></div></div></div></div></div></div>
</div>
<br></div></div>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div></div></div></div>
<br>_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div><br></div>