rcoster,

Na verdade não é bem isso. 
Vou colocar aqui um trecho com a chamada do código
e pode ser que fique mais claro.

Estou fazendo uma disciplina em que o trabalho atual consiste em algoritmos de Clusterização.
Nele, tive que implementar a função que realiza o agrupamento hierárquico.
Esse agrupamento pode variar segundo fórmulas que geram as distâncias entre elementos do dataset.
Os métodos que já implementei foram: singleLink, completeLink, groupAverage e ward.

Na chamada da função, eu devo permitir que o usuário defina qual o critério da distância.
Como eu não sei fazer esse procedimento de pegar o nome da função,
tive que implementar passando uma sequência de caracteres e, internamente na função,
verificar a qual função ela mapeia, na seguinte forma:

#inicio

selecao <- "singleLink"
#selecao <- "completeLink"
#selecao <- "groupAverage"
#selecao <- "ward"

#chamada da funcao
clusterHierarquico(dados, selecao)

#dentro do corpo de clusterHierarquico(...)

  #definindo a funcao para escolha dos valores entre distancias dos grupos
  funcao <- NULL
  if(selecao == "completeLink"){
    funcao <- completeLink
  }else if(selecao == "groupAverage"){
    funcao <- groupAverage  
  }else if(selecao == "ward"){
    funcao <- ward
  }else{
#padrao
    funcao <- singleLink
  }

#usa funcao como funcao para calculo das distancias

#fim

Embora eu consiga gerar pelos nomes, fazendo a verificação com IFELSE, isso deixa o código "preso".
Se houvesse uma forma de pegar o nome da função que é passada como argumento, 
eu poderia usar esse procedimento para pegar o nome e usar no plot do dendrograma.

Abaixo, seguem os gráficos que estou gerando de acordo com um dataset de países europeus com 2 atributos: 
inflação e taxa de desemprego. 
Para ver melhor, basta clicar no gráfico e solicitar abrir em uma nova janela ou aba do navegador.

Imagem inline 1Imagem inline 2Imagem inline 3Imagem inline 4

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.

Caso tenha ficado mais claro agora e alguém saiba como resolver, agradeço antecipadamente.

Eu sei que pode parecer um "exagero", mas gostaria de deixar o código mais flexível, 
até como forma de aprender para implementações mais complexas no futuro.

Atenciosamente,

David Feitosa

(\_(\
(=°;°)
(("")("")

Em 23 de outubro de 2014 10:11, <rcoster@gmail.com> escreveu:
David,

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.

Talvez seja isso que tu precisa fazer. Agora, como fazer isso eu não sei.

On Thu Oct 23 2014 at 10:53:13 Benilton Carvalho <beniltoncarvalho@gmail.com> wrote:
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.

Em 23 de outubro de 2014 03:36, David Feitosa <contato@davidfeitosa.com> escreveu:

Benilton, não seria bem isso...

Seria algo do tipo:

#min e max são as funções padrões do R
f <- min
#f <- max

nome <- algumaFormaDeExtrairOnomeDaFuncao(f)

#dados = estrutura de dados para plotar
#nome = titulo do grafico
plot(dados, main = nome)

Eu gostaria de saber qual o nome da funcao f, nesse caso min ou max,
mas sem ter que fazer um "IFELSE" para mudar o titulo do plot.

No meu caso, serviria para saber qual função foi aplicada 
aquela massa de dados e que gerou o gráfico.



Atenciosamente,

David Feitosa

(\_(\
(=°;°)
(("")("")

Em 22 de outubro de 2014 23:20, Benilton Carvalho <beniltoncarvalho@gmail.com> escreveu:

David,

perdoe minha ignorancia, mas eu nao entendi para o que vc utilizaria... mas, eu acho que o q vc quer e':

minhaFuncao <- function(){
## codigo
print(match.call()[[1]])
## mais codigo
}

vc pode ate' usar as.character(match.call()[[1]]) se quiser a string do nome da funcao...

b

Em 22 de outubro de 2014 17:41, David Feitosa <davidfeitosa@gmail.com> escreveu:
Caríssimos, boa noite.

Existe modo de se obter o nome de uma função em tempo de execução?

Explicando melhor: eu tenho uma função da forma

minhaFuncao <-function(){
#codigo
}

e uma variável que recebe essa função:

f <- minhaFuncao

Eu gostaria de obter o nome dela para ser usado em um gráfico

Em Java, eu sei que poderia usar a API de Reflection para, em tempo de execução,
analisar a classe, seus métodos etc e obter o nome para uso posterior.

Há como fazer o equivalente em R?

No meu caso, bastaria saber qual o nome da função que a variável "f" carrega.

Grato.

Atenciosamente,

David Feitosa

(\_(\
(=°;°)
(("")("")

_______________________________________________
R-br mailing list
R-br@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@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@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@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@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.