Uma pequena dúvida sobre métodos

Olá pessoal, Gostaria de fazer uma consulta ao pessoal mais ligado ao desenvolvimento de soluções para o R. Estamos trabalhando para fazer o pacote fdth (http://cran.r-project.org/web/packages/fdth/index.html) mais genérico, flexível e por conseguinte mais útil aos usuários. Entre as novidades: - os métodos tabulares e gráficos foram estendidos para as variáveis categóricas com as novas opções (barchart, poligon e dotchart para qualquer coluna da fdt assim como o gráfico de pareto) para as categóricas; - permite a criação de tabelas de distribuição de frequências (fdt) para variáveis contínuas e categóricas com um mínimo de argumentos baseado em uma fdt prévia existente na literatura (ou seja, você não conhece - de fato - o vetor da variável, apenas as frequências); - cálculo de medidas de tendência central (média e mediana) e posição (quantil genérico) a partir de uma fdt. Para gerar uma tabela de uma variável contínua (por exemplo) à partir do vetor de frequências é bem simples:
tb <- make.fdt(x=vetor_freq, start, end)
Uma vez criado 'tb' irá pertencer a classe 'fdt'. Foram implementando métodos para as funções genéricas (mean, median, quantile) para a classe 'fdt'. por exemplo:
mean(tb)
median(tb)
quantile(tb, i=10, probs=seq(0, 1, .1) para calcular o 10 percentil.
Minha questão é a seguinte, as funções 'var' e 'sd' não são genéricas. Assim não posso implementar o métodos: var.fdt e sd.fdt para chamar assim:
var(tb)
sd(tb)
Poderia se criasse nova funções 'var' e 'sd' genéricas no pacote. Contudo, fico um pouco apreensivo com esta abordagem. Qual seria uma opção razoável para este caso? A mais simples seria escrever as funções 'var.fdt' e 'sd.fdt' e o usuário teria que usar assim:
var.fdt(x=tb)
sd.fdt(x=tb)
Mas foge do padrão do restante do pacote que realmente é orientado a objetos S3. Nunca tinha me deparado com uma caso desses. Sugestões são muito bem vindas... Ab, ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica UESC/DCET/Brasil joseclaudio.faria at gmail.com Telefones: 55(73)3680.5545 - UESC 55(73)9966.9100 - VIVO 55(73)9100.7351 - TIM 55(73)8817.6159 - OI ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\

José Cláudio, De fato o R tem uma "bagagem histórica" e nem tudo nele é ortogonal (no sentido de programação) nem totalmente orientado a objetos. IMNSHO, acho que a abordagem que, em princípio, lhe deixa mais apreensivo seria a mais apropriada (e eventualmente após um teste de fogo no pacote, uma negociação poderia ser feito com os desenvolvedores do pacote base/stats do R para migrar essas funções para lá [que me parece o lugar "certo" para ela]), e uma ação intermediária poderia ser sobrepor essas funções no seu pacote e assegurar-se que se o(s) objeto(s) não fossem do pacote fdt a função do pacote base fosse chamada (na chamada do pacote você teria a famosa mensagem de *masking* dos objetos que você implementasse, mas isso já é a vida como ela é no [atual] R. meus 0,01999999... []s -- Cesar Rabak 2014-09-01 17:43 GMT-03:00 Jose Claudio Faria <joseclaudio.faria@gmail.com>:
Olá pessoal,
Gostaria de fazer uma consulta ao pessoal mais ligado ao desenvolvimento de soluções para o R.
Estamos trabalhando para fazer o pacote fdth (http://cran.r-project.org/web/packages/fdth/index.html) mais genérico, flexível e por conseguinte mais útil aos usuários.
Entre as novidades: - os métodos tabulares e gráficos foram estendidos para as variáveis categóricas com as novas opções (barchart, poligon e dotchart para qualquer coluna da fdt assim como o gráfico de pareto) para as categóricas;
- permite a criação de tabelas de distribuição de frequências (fdt) para variáveis contínuas e categóricas com um mínimo de argumentos baseado em uma fdt prévia existente na literatura (ou seja, você não conhece - de fato - o vetor da variável, apenas as frequências);
- cálculo de medidas de tendência central (média e mediana) e posição (quantil genérico) a partir de uma fdt.
Para gerar uma tabela de uma variável contínua (por exemplo) à partir do vetor de frequências é bem simples:
tb <- make.fdt(x=vetor_freq, start, end)
Uma vez criado 'tb' irá pertencer a classe 'fdt'. Foram implementando métodos para as funções genéricas (mean, median, quantile) para a classe 'fdt'. por exemplo:
mean(tb)
median(tb)
quantile(tb, i=10, probs=seq(0, 1, .1) para calcular o 10 percentil.
Minha questão é a seguinte, as funções 'var' e 'sd' não são genéricas. Assim não posso implementar o métodos: var.fdt e sd.fdt para chamar assim:
var(tb)
sd(tb)
Poderia se criasse nova funções 'var' e 'sd' genéricas no pacote. Contudo, fico um pouco apreensivo com esta abordagem.
Qual seria uma opção razoável para este caso? A mais simples seria escrever as funções 'var.fdt' e 'sd.fdt' e o usuário teria que usar assim:
var.fdt(x=tb)
sd.fdt(x=tb)
Mas foge do padrão do restante do pacote que realmente é orientado a objetos S3.
Nunca tinha me deparado com uma caso desses.
Sugestões são muito bem vindas...
Ab, ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica UESC/DCET/Brasil joseclaudio.faria at gmail.com Telefones: 55(73)3680.5545 - UESC 55(73)9966.9100 - VIVO 55(73)9100.7351 - TIM 55(73)8817.6159 - OI ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ _______________________________________________ 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.

Claudio, Nao e uma resposta boa, mas como em outros pacotes que uso ja vi funçoes terem o mesmo nome com letras maiusculas ou com pequenas diferenças como Predict ao inves de predict p.values ao inves de p.value Mas em materia de tabelas a melhor funçao que ja usei é a epicalc::tableStack. Ela tem alguns poucos incovenientes que da pra contornar. Essa e bacana pq ja coloca a tabela num formato palatavel para o leitor do relatorio final e da pra exportar para um pmanilha de calculo ou para um documento texto com o pacote rtf por exemplo. Talves te ajude a inspirar alguma coisa nas suas tabelas. Pedro Brasil via Android (:)= Em 01/09/2014 17:43, "Jose Claudio Faria" <joseclaudio.faria@gmail.com> escreveu:
Olá pessoal,
Gostaria de fazer uma consulta ao pessoal mais ligado ao desenvolvimento de soluções para o R.
Estamos trabalhando para fazer o pacote fdth (http://cran.r-project.org/web/packages/fdth/index.html) mais genérico, flexível e por conseguinte mais útil aos usuários.
Entre as novidades: - os métodos tabulares e gráficos foram estendidos para as variáveis categóricas com as novas opções (barchart, poligon e dotchart para qualquer coluna da fdt assim como o gráfico de pareto) para as categóricas;
- permite a criação de tabelas de distribuição de frequências (fdt) para variáveis contínuas e categóricas com um mínimo de argumentos baseado em uma fdt prévia existente na literatura (ou seja, você não conhece - de fato - o vetor da variável, apenas as frequências);
- cálculo de medidas de tendência central (média e mediana) e posição (quantil genérico) a partir de uma fdt.
Para gerar uma tabela de uma variável contínua (por exemplo) à partir do vetor de frequências é bem simples:
tb <- make.fdt(x=vetor_freq, start, end)
Uma vez criado 'tb' irá pertencer a classe 'fdt'. Foram implementando métodos para as funções genéricas (mean, median, quantile) para a classe 'fdt'. por exemplo:
mean(tb)
median(tb)
quantile(tb, i=10, probs=seq(0, 1, .1) para calcular o 10 percentil.
Minha questão é a seguinte, as funções 'var' e 'sd' não são genéricas. Assim não posso implementar o métodos: var.fdt e sd.fdt para chamar assim:
var(tb)
sd(tb)
Poderia se criasse nova funções 'var' e 'sd' genéricas no pacote. Contudo, fico um pouco apreensivo com esta abordagem.
Qual seria uma opção razoável para este caso? A mais simples seria escrever as funções 'var.fdt' e 'sd.fdt' e o usuário teria que usar assim:
var.fdt(x=tb)
sd.fdt(x=tb)
Mas foge do padrão do restante do pacote que realmente é orientado a objetos S3.
Nunca tinha me deparado com uma caso desses.
Sugestões são muito bem vindas...
Ab, ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica UESC/DCET/Brasil joseclaudio.faria at gmail.com Telefones: 55(73)3680.5545 - UESC 55(73)9966.9100 - VIVO 55(73)9100.7351 - TIM 55(73)8817.6159 - OI ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ _______________________________________________ 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.

Enquanto o R-core nao as torna genericas (vai um tempo... estamos na fila para isso ha' algum tempo): - crie a generica - redefina a padrao - defina o metodo para a sua classe sd <- function(x, ...) UseMethod("sd") sd.default <- stats::sd sd.fdt = function(x, ...) <sua definicao> b Em 1 de setembro de 2014 21:10, Pedro Emmanuel Alvarenga Americano do Brasil <emmanuel.brasil@gmail.com> escreveu:
Claudio,
Nao e uma resposta boa, mas como em outros pacotes que uso ja vi funçoes terem o mesmo nome com letras maiusculas ou com pequenas diferenças como
Predict ao inves de predict p.values ao inves de p.value
Mas em materia de tabelas a melhor funçao que ja usei é a epicalc::tableStack. Ela tem alguns poucos incovenientes que da pra contornar. Essa e bacana pq ja coloca a tabela num formato palatavel para o leitor do relatorio final e da pra exportar para um pmanilha de calculo ou para um documento texto com o pacote rtf por exemplo. Talves te ajude a inspirar alguma coisa nas suas tabelas.
Pedro Brasil via Android (:)= Em 01/09/2014 17:43, "Jose Claudio Faria" <joseclaudio.faria@gmail.com> escreveu:
Olá pessoal,
Gostaria de fazer uma consulta ao pessoal mais ligado ao desenvolvimento de soluções para o R.
Estamos trabalhando para fazer o pacote fdth (http://cran.r-project.org/web/packages/fdth/index.html) mais genérico, flexível e por conseguinte mais útil aos usuários.
Entre as novidades: - os métodos tabulares e gráficos foram estendidos para as variáveis categóricas com as novas opções (barchart, poligon e dotchart para qualquer coluna da fdt assim como o gráfico de pareto) para as categóricas;
- permite a criação de tabelas de distribuição de frequências (fdt) para variáveis contínuas e categóricas com um mínimo de argumentos baseado em uma fdt prévia existente na literatura (ou seja, você não conhece - de fato - o vetor da variável, apenas as frequências);
- cálculo de medidas de tendência central (média e mediana) e posição (quantil genérico) a partir de uma fdt.
Para gerar uma tabela de uma variável contínua (por exemplo) à partir do vetor de frequências é bem simples:
tb <- make.fdt(x=vetor_freq, start, end)
Uma vez criado 'tb' irá pertencer a classe 'fdt'. Foram implementando métodos para as funções genéricas (mean, median, quantile) para a classe 'fdt'. por exemplo:
mean(tb)
median(tb)
quantile(tb, i=10, probs=seq(0, 1, .1) para calcular o 10 percentil.
Minha questão é a seguinte, as funções 'var' e 'sd' não são genéricas. Assim não posso implementar o métodos: var.fdt e sd.fdt para chamar assim:
var(tb)
sd(tb)
Poderia se criasse nova funções 'var' e 'sd' genéricas no pacote. Contudo, fico um pouco apreensivo com esta abordagem.
Qual seria uma opção razoável para este caso? A mais simples seria escrever as funções 'var.fdt' e 'sd.fdt' e o usuário teria que usar assim:
var.fdt(x=tb)
sd.fdt(x=tb)
Mas foge do padrão do restante do pacote que realmente é orientado a objetos S3.
Nunca tinha me deparado com uma caso desses.
Sugestões são muito bem vindas...
Ab, ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica UESC/DCET/Brasil joseclaudio.faria at gmail.com Telefones: 55(73)3680.5545 - UESC 55(73)9966.9100 - VIVO 55(73)9100.7351 - TIM 55(73)8817.6159 - OI ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ _______________________________________________ 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.

Agradeço (muito mesmo) as observações e sugestões do Cesar Rabak e Benilton que indicam a mesma direção. Após elas terem sido emitidas sinto-me mais seguro para implementar nesta direção (que é também a que considero a mais correta no sentido de orientação a objetos). Agradeço também as dicas do Pedro Emanuel sobre o pacote epicalc e a função tableStack. O que estamos fazendo difere bastante da abordagem daquele pacote. Apenas acho estranho que funções/medidas da magnitude de 'var' e 'sd' não tenham (ainda) sido implementadas como genéricas pelo Core Team. Enfim, muito obrigado a todos pelas contribuições! Creio que irão gostar da nova versão (em breve) do pacote fdth. ;) Ab, ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica UESC/DCET/Brasil joseclaudio.faria at gmail.com Telefones: 55(73)3680.5545 - UESC 55(73)9966.9100 - VIVO 55(73)9100.7351 - TIM 55(73)8817.6159 - OI ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ 2014-09-01 21:46 GMT-03:00 Benilton Carvalho <beniltoncarvalho@gmail.com>:
Enquanto o R-core nao as torna genericas (vai um tempo... estamos na fila para isso ha' algum tempo):
- crie a generica - redefina a padrao - defina o metodo para a sua classe
sd <- function(x, ...) UseMethod("sd") sd.default <- stats::sd sd.fdt = function(x, ...) <sua definicao>
b
Em 1 de setembro de 2014 21:10, Pedro Emmanuel Alvarenga Americano do Brasil <emmanuel.brasil@gmail.com> escreveu:
Claudio,
Nao e uma resposta boa, mas como em outros pacotes que uso ja vi funçoes terem o mesmo nome com letras maiusculas ou com pequenas diferenças como
Predict ao inves de predict p.values ao inves de p.value
Mas em materia de tabelas a melhor funçao que ja usei é a epicalc::tableStack. Ela tem alguns poucos incovenientes que da pra contornar. Essa e bacana pq ja coloca a tabela num formato palatavel para o leitor do relatorio final e da pra exportar para um pmanilha de calculo ou para um documento texto com o pacote rtf por exemplo. Talves te ajude a inspirar alguma coisa nas suas tabelas.
Pedro Brasil via Android (:)=
Em 01/09/2014 17:43, "Jose Claudio Faria" <joseclaudio.faria@gmail.com> escreveu:
Olá pessoal,
Gostaria de fazer uma consulta ao pessoal mais ligado ao desenvolvimento de soluções para o R.
Estamos trabalhando para fazer o pacote fdth (http://cran.r-project.org/web/packages/fdth/index.html) mais genérico, flexível e por conseguinte mais útil aos usuários.
Entre as novidades: - os métodos tabulares e gráficos foram estendidos para as variáveis categóricas com as novas opções (barchart, poligon e dotchart para qualquer coluna da fdt assim como o gráfico de pareto) para as categóricas;
- permite a criação de tabelas de distribuição de frequências (fdt) para variáveis contínuas e categóricas com um mínimo de argumentos baseado em uma fdt prévia existente na literatura (ou seja, você não conhece - de fato - o vetor da variável, apenas as frequências);
- cálculo de medidas de tendência central (média e mediana) e posição (quantil genérico) a partir de uma fdt.
Para gerar uma tabela de uma variável contínua (por exemplo) à partir do vetor de frequências é bem simples:
tb <- make.fdt(x=vetor_freq, start, end)
Uma vez criado 'tb' irá pertencer a classe 'fdt'. Foram implementando métodos para as funções genéricas (mean, median, quantile) para a classe 'fdt'. por exemplo:
mean(tb)
median(tb)
quantile(tb, i=10, probs=seq(0, 1, .1) para calcular o 10 percentil.
Minha questão é a seguinte, as funções 'var' e 'sd' não são genéricas. Assim não posso implementar o métodos: var.fdt e sd.fdt para chamar assim:
var(tb)
sd(tb)
Poderia se criasse nova funções 'var' e 'sd' genéricas no pacote. Contudo, fico um pouco apreensivo com esta abordagem.
Qual seria uma opção razoável para este caso? A mais simples seria escrever as funções 'var.fdt' e 'sd.fdt' e o usuário teria que usar assim:
var.fdt(x=tb)
sd.fdt(x=tb)
Mas foge do padrão do restante do pacote que realmente é orientado a objetos S3.
Nunca tinha me deparado com uma caso desses.
Sugestões são muito bem vindas...
Ab, ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ Jose Claudio Faria Estatistica UESC/DCET/Brasil joseclaudio.faria at gmail.com Telefones: 55(73)3680.5545 - UESC 55(73)9966.9100 - VIVO 55(73)9100.7351 - TIM 55(73)8817.6159 - OI ///\\\///\\\///\\\///\\\///\\\///\\\///\\\///\\\ _______________________________________________ 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
-
Cesar Rabak
-
Jose Claudio Faria
-
Pedro Emmanuel Alvarenga Americano do Brasil