
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 (\_(\ (=°;°) (("")("")

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.

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.

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.

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.

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. [image: Imagem inline 1][image: Imagem inline 2][image: Imagem inline 3][image: Imagem 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.

Caríssimos, Eu notei que o e-mail que enviei ontem não foi permitido pelo tamanho das imagens. Estou reenviando, mas com um link externo que as contem. Segue... --- 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 método 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: http://figshare.com/articles/M_todos_de_Dist_ncia_para_Cluster_Hier_rquico/1... 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.

David, Mais uma tentativa, agora mais certeira (acho eu): um *funcao <- get(selecao) *não resolve o teu problema? Ainda fica em 2 variáveis, mas pelo menos te livra da sequencia de if/elseif/else. Para correr todos valores, bastaria um *for (selecao in c("singleLink", "completeLink", "groupAverage", "ward")) { ... }* []'s On Fri Oct 24 2014 at 09:07:07 David Feitosa <contato@davidfeitosa.com> wrote:
Caríssimos,
Eu notei que o e-mail que enviei ontem não foi permitido pelo tamanho das imagens. Estou reenviando, mas com um link externo que as contem. Segue... ---
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 método 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:
http://figshare.com/articles/M_todos_de_Dist_ncia_para_Cluster_Hier_rquico/1...
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.
_______________________________________________ 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.

rcoster, não era bem isso, mas acho que talvez sirva. vou fazer um teste. pelo que vi o get carrega a definição do objeto, no caso, uma função. o que eu achei no meio das buscas aqui foi esse código, mas acho que resolve parcial também. https://stat.ethz.ch/pipermail/r-help/2006-October/114431.html f <- function(x) { if (!is.list(x)) x <- list(x) if (is.null(names(x))) names(x) <- "" names(x)[names(x) == ""] <- NA mc <- match.call()[-1][[1]] if (length(mc) > 1) mc <- mc[-1] ifelse(is.na(names(x)), as.character(mc), names(x)) } f(c(a = mean)) f(list(a = mean, b = sd)) f(c(f = function(x)x*x)) f(list(f = function(x)x*x, function(x)1-x)) L <- list(a = mean, b = sd) f(L) L <- list(a = mean, function(x)x) f(L) f(mean) f(list(a = mean, sd)) f(list(mean, sd)) f(function(x)x*x) f(list(function(x)x*x, function(y)y-1)) obrigado pelo esforço. vou dar uma testada. [?] Atenciosamente, David Feitosa (\_(\ (=°;°) (("")("") Em 24 de outubro de 2014 08:24, <rcoster@gmail.com> escreveu:
David,
Mais uma tentativa, agora mais certeira (acho eu): um *funcao <- get(selecao) *não resolve o teu problema? Ainda fica em 2 variáveis, mas pelo menos te livra da sequencia de if/elseif/else.
Para correr todos valores, bastaria um *for (selecao in c("singleLink", "completeLink", "groupAverage", "ward")) { ... }*
[]'s
On Fri Oct 24 2014 at 09:07:07 David Feitosa <contato@davidfeitosa.com> wrote:
Caríssimos,
Eu notei que o e-mail que enviei ontem não foi permitido pelo tamanho das imagens. Estou reenviando, mas com um link externo que as contem. Segue... ---
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 método 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:
http://figshare.com/articles/M_todos_de_Dist_ncia_para_Cluster_Hier_rquico/1...
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.
_______________________________________________ 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.
participantes (4)
-
Benilton Carvalho
-
David Feitosa
-
David Feitosa
-
rcoster@gmail.com