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, <[email protected]> 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 <[email protected]> > 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/1213685 >> >> 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, <[email protected]> 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 < >>> [email protected]> 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 <[email protected] >>>> > 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 < >>>>> [email protected]> 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 <[email protected] >>>>>> > 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 >>>>>>> [email protected] >>>>>>> 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 >>>>>> [email protected] >>>>>> 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 >>>>> [email protected] >>>>> 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 >>>> [email protected] >>>> 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 >>> [email protected] >>> 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 >> [email protected] >> 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 > [email protected] > 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 [email protected] 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.
