<div dir="ltr">rcoster,<div><br></div><div>Na verdade não é bem isso. </div><div>Vou colocar aqui um trecho com a chamada do código</div><div>e pode ser que fique mais claro.</div><div><br></div><div>Estou fazendo uma disciplina em que o trabalho atual consiste em algoritmos de Clusterização.</div><div>Nele, tive que implementar a função que realiza o agrupamento hierárquico.</div><div>Esse agrupamento pode variar segundo fórmulas que geram as distâncias entre elementos do dataset.</div><div>Os métodos que já implementei foram: singleLink, completeLink, groupAverage e ward.</div><div><br></div><div>Na chamada da função, eu devo permitir que o usuário defina qual o critério da distância.</div><div>Como eu não sei fazer esse procedimento de pegar o nome da função,</div><div>tive que implementar passando uma sequência de caracteres e, internamente na função,</div><div>verificar a qual função ela mapeia, na seguinte forma:</div><div><br></div><div>#inicio</div><div><br></div><div><div>selecao <- "singleLink"</div><div>#selecao <- "completeLink"</div><div>#selecao <- "groupAverage"</div><div>#selecao <- "ward"</div><div><br></div><div>#chamada da funcao</div><div>clusterHierarquico(dados, selecao)<br></div></div><div><br></div><div>#dentro do corpo de clusterHierarquico(...)</div><div><br></div><div><div> #definindo a funcao para escolha dos valores entre distancias dos grupos</div><div> funcao <- NULL</div><div> if(selecao == "completeLink"){</div><div> funcao <- completeLink</div><div> }else if(selecao == "groupAverage"){</div><div> funcao <- groupAverage </div><div> }else if(selecao == "ward"){</div><div> funcao <- ward</div><div> }else{</div><div>#padrao</div><div> funcao <- singleLink</div><div> }</div></div><div><br></div><div>#usa funcao como funcao para calculo das distancias</div><div><br></div><div>#fim</div><div><br></div><div>Embora eu consiga gerar pelos nomes, fazendo a verificação com IFELSE, isso deixa o código "preso".</div><div>Se houvesse uma forma de pegar o nome da função que é passada como argumento, </div><div>eu poderia usar esse procedimento para pegar o nome e usar no plot do dendrograma.</div><div><br></div><div>Abaixo, seguem os gráficos que estou gerando de acordo com um dataset de países europeus com 2 atributos: </div><div>inflação e taxa de desemprego. </div><div>Para ver melhor, basta clicar no gráfico e solicitar abrir em uma nova janela ou aba do navegador.</div><div><br></div><div><img src="cid:ii_1493eeb7dd0e2c3a" alt="Imagem inline 1" width="224" height="168" style="margin-right: 0px;"><img src="cid:ii_1493eebdba89185b" alt="Imagem inline 2" width="224" height="168" style="margin-right: 0px;"><img src="cid:ii_1493eeca7802f8a7" alt="Imagem inline 3" width="224" height="168" style="margin-right: 0px;"><img src="cid:ii_1493eed252448622" alt="Imagem inline 4" width="224" height="168" style="margin-right: 0px;"><br></div><div><br></div><div>Deysi enviou-me mensagem de que há uma forma, mas ainda não me retornou com a solução, pois não está com acesso ao PC dela no momento.</div><div><br></div><div>Caso tenha ficado mais claro agora e alguém saiba como resolver, agradeço antecipadamente.</div><div><br></div><div>Eu sei que pode parecer um "exagero", mas gostaria de deixar o código mais flexível, </div><div>até como forma de aprender para implementações mais complexas no futuro.</div><div class="gmail_extra"><div><div><br></div><div>Atenciosamente,</div><div><br></div>David Feitosa<br><div><div></div></div><div><br></div><div><div>(\_(\</div><div>(=°;°)</div><div>(("")("")</div></div></div>
<br><div class="gmail_quote">Em 23 de outubro de 2014 10:11, <span dir="ltr"><<a href="mailto:rcoster@gmail.com" target="_blank">rcoster@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">David,<br><br><div>Não sei se isso pode te ajudar ou não, mas o pacote data.table tem um comportamento parecido com o que tu quer: ao fazer um "banco2 <- banco" (onde banco é um arquivo data.table), as 2 variáveis ficam associadas: alterando banco2, tu altera também banco (e vice-versa). Na verdade, a operação '<-' para data.tables cria uma referência e não uma cópia.</div><div><br></div><div><b>Talvez</b> seja isso que tu precisa fazer. Agora, como fazer isso eu não sei.</div><div class=""><div class="h5"><br><div class="gmail_quote">On Thu Oct 23 2014 at 10:53:13 Benilton Carvalho <<a href="mailto:beniltoncarvalho@gmail.com" target="_blank">beniltoncarvalho@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Putz... pode ser que haja um meio, mas eu desconheco... se vc estivesse usando diretamente min/max, seria o match.call mesmo... mas assinalando-a para uma outra funcao, fica um pouco mais complexo... Sorry por nao ajudar.</div><div class="gmail_extra"><br><div class="gmail_quote">Em 23 de outubro de 2014 03:36, David Feitosa <span dir="ltr"><<a href="mailto:contato@davidfeitosa.com" target="_blank">contato@davidfeitosa.com</a>></span> escreveu:</div></div><div class="gmail_extra"><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Benilton, não seria bem isso...<div><br></div><div>Seria algo do tipo:</div><div><br></div><div>#min e max são as funções padrões do R</div><div>f <- min<br></div><div>#f <- max</div><div><br></div><div>nome <- algumaFormaDeExtrairOnomeDaFuncao(f)</div><div><br></div><div>#dados = estrutura de dados para plotar</div><div>#nome = titulo do grafico</div><div>plot(dados, main = nome)</div><div><br></div><div>Eu gostaria de saber qual o nome da funcao <b><i>f</i></b>, nesse caso <i><b>min</b></i> ou <b><i>max</i></b>,</div><div>mas sem ter que fazer um "IFELSE" para mudar o titulo do plot.</div><div><br></div><div>No meu caso, serviria para saber qual função foi aplicada </div><div>aquela massa de dados e que gerou o gráfico.</div></div><div class="gmail_extra"><span><br clear="all"><div><div dir="ltr"><div><br></div><div><div><br></div><div>Atenciosamente,</div><div><br></div>David Feitosa<br><div><div></div></div><div><br></div><div><div>(\_(\</div><div>(=°;°)</div><div>(("")("")</div></div></div></div></div>
<br></span><div class="gmail_quote">Em 22 de outubro de 2014 23:20, Benilton Carvalho <span dir="ltr"><<a href="mailto:beniltoncarvalho@gmail.com" target="_blank">beniltoncarvalho@gmail.com</a>></span> escreveu:<div><div><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">David,<div><br></div><div>perdoe minha ignorancia, mas eu nao entendi para o que vc utilizaria... mas, eu acho que o q vc quer e':</div><div><br></div><div>minhaFuncao <- function(){</div><div>## codigo</div><div>print(match.call()[[1]])</div><div>## mais codigo</div><div>}</div><div><br></div><div>vc pode ate' usar as.character(match.call()[[1]]) se quiser a string do nome da funcao...</div><div><br></div><div>b</div></div><div class="gmail_extra"><br><div class="gmail_quote">Em 22 de outubro de 2014 17:41, David Feitosa <span dir="ltr"><<a href="mailto:davidfeitosa@gmail.com" target="_blank">davidfeitosa@gmail.com</a>></span> escreveu:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div><div dir="ltr">Caríssimos, boa noite.<div><br></div><div>Existe modo de se obter o nome de uma função em tempo de execução?</div><div><br></div><div>Explicando melhor: eu tenho uma função da forma</div><div><br></div><div>minhaFuncao <-function(){</div><div>#codigo</div><div>}</div><div><br></div><div>e uma variável que recebe essa função:</div><div><br></div><div>f <- minhaFuncao</div><div><br></div><div>Eu gostaria de obter o nome dela para ser usado em um gráfico</div><div><br></div><div>Em Java, eu sei que poderia usar a API de Reflection para, em tempo de execução,</div><div>analisar a classe, seus métodos etc e obter o nome para uso posterior.</div><div><br></div><div>Há como fazer o equivalente em R?</div><div><br></div><div>No meu caso, bastaria saber qual o nome da função que a variável "f" carrega.<br clear="all"><div><div dir="ltr"><div><br></div><div>Grato.</div><div><div><br></div><div>Atenciosamente,</div><div><br></div>David Feitosa<br><div><div></div></div><div><br></div><div><div>(\_(\</div><div>(=°;°)</div><div>(("")("")</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" 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" 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" 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" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div></div></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" 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" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.<br></blockquote></div></div>
______________________________<u></u>_________________<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" target="_blank">https://listas.inf.ufpr.br/<u></u>cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" target="_blank">http://www.leg.ufpr.br/r-br-<u></u>guia</a>) e forneça código mínimo reproduzível.</blockquote></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" 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" 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>